Пример №1:
Код: Выделить всё
struct A {
operator int() const;
};
struct B : A {
constexpr bool operator==(const B &) const = default;
};
ошибка: вызов функции, отличной от constexpr, 'A::operator int() const' [-Winvalid-constexpr]
Пример №2 :
Код: Выделить всё
struct A {
bool operator==(const A &) const;
};
struct B : A {
constexpr bool operator==(const B &) const = default;
};
ошибка: определение по умолчанию оператора сравнения на равенство, который объявлен constexpr, но вызывает функцию сравнения, отличную от constexpr, является расширением C++23. [-Werror,-Wc++23-default-comp-relaxed-constexpr]
Оба примера кода действительны только в C++23, а не в C++23. допустимо в C++20?
Подробнее здесь: https://stackoverflow.com/questions/788 ... omparisons
Мобильная версия