Почему оператор по умолчанию <=> предоставляет нам оператор == бесплатно, а специальная реализация — нет? [дубликат]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему оператор по умолчанию <=> предоставляет нам оператор == бесплатно, а специальная реализация — нет? [дубликат]

Сообщение Anonymous »

Я попробовал два варианта определения оператора,
вариант A использует = default. В результате я могу использовать оператор ==.
Но если я реализую оператор вручную в варианте B, сравнение x1 == x2 перестанет работать.
Почему это так? Это указано в стандарте C++20? Пока мне не удалось найти никакого объяснения.
Для меня оператор — это функция, независимо от того, используется она по умолчанию или нет. Я не ожидаю никакой разницы между A и B.
Код:
#include

class X {
public:
int y;

/*A*/ inline std::strong_ordering operator(const X& another) const = default;
/*B*/ //inline std::strong_ordering operator(const X& another) const { return y another.y; }
};

int main()
{
using std::cout;
using std::endl;

X x1;
x1.y = 5;

X x2;
x2.y = 7;

cout

Подробнее здесь: https://stackoverflow.com/questions/786 ... implementa
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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