Оператор трехстороннего сравнения по умолчанию с типом возвращаемого значения, отличным от категории сравнения (C++20)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Оператор трехстороннего сравнения по умолчанию с типом возвращаемого значения, отличным от категории сравнения (C++20)

Сообщение Anonymous »

Согласно документации cppreference, можно определить оператор трехстороннего сравнения по умолчанию с типом возвращаемого значения, отличным от категории сравнения:

Если разрешение перегрузки для b дает пригодный для использования кандидат и может быть явно преобразовано в T с помощью static_cast, синтезированное сравнение будет static_cast(a б).

Однако следующий код не работает:

Код: Выделить всё

struct AA
{
int a;

int operator (const AA &other) const
{
if (a < other.a)
return -7;
else if (a > other.a)
return 5;
else
return 0;
}
};

struct BB
{
AA b;

int operator (const BB &other) const = default;
};

int main ()
{
BB b1{4}, b2{6};
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79902461/defaulted-three-way-comparison-operator-with-a-return-type-different-from-the-co[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»