Я попробовал два варианта определения оператора,
вариант 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
Почему оператор по умолчанию <=> предоставляет нам оператор == бесплатно, а специальная реализация — нет? [дубликат] ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ошибка: тип «std::bitset<16>» не предоставляет оператор вызова [дубликат]
Anonymous » » в форуме C++ - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-