Оператор не по умолчанию <=> не генерирует == и != [дубликат]C++

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

Сообщение Anonymous »


Я столкнулся со странным поведением нового оператора космического корабля в C++20. Я использую компилятор Visual Studio 2019 с /std:c++latest.

Этот код компилируется нормально, как и ожидалось:

#include структура X { INT Dummy = 0; автоматический оператор(const X&) const = по умолчанию; // Реализация по умолчанию }; интервал основной() { Х а, б; а == б; // ХОРОШО! вернуть 0; } Однако, если я изменю X на это:

структура X { INT Dummy = 0; автоматический оператор(const X& другое) const { return Dummy other.Dummy; } }; Я получаю следующую ошибку компилятора:

ошибка C2676: двоичный '==': 'X' не определяет этот оператор или преобразование в тип, приемлемый для предопределенного оператора

Я попробовал это и на clang, и у меня такое же поведение.

Я был бы признателен за объяснение того, почему реализация по умолчанию генерирует operator== правильно, а пользовательская — нет.
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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