У меня есть структура под названием node
, содержащая объект типа N
.
Я хочу создать std::set<node>
, и я также хочу использовать set::find(N value)
, чтобы найти узел в этом наборе без создания фиктивного узла.
В настоящее время код выглядит так:
struct node {
N value;
explicit node(N val)
: value(val) {}
// always compare nodes by its value only
auto operator<=>(const node& other) const noexcept -> std::strong_ordering {
return value <=> other.value; // <-- ERROR HERE
}
// compare nodes with N is allowed
auto operator<=>(N other_value) const noexcept -> std::strong_ordering {
return value <=> other_value; // <-- ERROR HERE
}
};
Код работает нормально, когда N
равно int
.
Однако, когда N
равно std::string
, возникает эта ошибка:
недопустимые операнды для двоичного выражения ('const std :: __ 1 :: basic_string 'и' const std :: __ 1 :: basic_string ') [clang-diagnosti c -error]
В чем проблема и как ее решить?