Код: Выделить всё
struct MyStruct {
int i;
std::vector v;
std::partial_ordering operator(const MyStruct &a) const = default;
};
// Fails: can't infer comparison result type
static_assert(std::same_as);
Код: Выделить всё
struct MyStruct {
int i;
std::vector v;
std::partial_ordering operator(const MyStruct &other) const {
if (auto r = i other.i; r != 0)
return r;
return v other.v;
}
};
// OK
static_assert(std::same_as);
[*]Есть ли способ решить эту проблему? Спецификация запрещает перегрузку std::compare_three_way_result, но есть ли другой способ повлиять на вектор или std::lexicographical_compare_three_way?
[*]Есть ли способ, используя концепции или предложения, обнаружить неполный тип? В качестве альтернативы я мог бы создать свой собственный векторный класс-контейнер, который по умолчанию использует std::partial_ordering, когда тип неполный.
Подробнее здесь: https://stackoverflow.com/questions/788 ... structures