Неявно удаленная функция переопределяет удаленную виртуальную функциюC++

Программы на C++. Форум разработчиков
Anonymous
Неявно удаленная функция переопределяет удаленную виртуальную функцию

Сообщение Anonymous »

Это скорее теоретический вопрос о интерпретации стандарта в одном конкретном случае, приведенном ниже: < /p>
struct B;

struct A {
virtual bool operator ==(const B&) const = delete;
};

struct B : A {
bool operator ==(const B&) const = default;
};
< /code>
Эта программа отклоняется от GCC, EDG, MSVC с < /p>

Ошибка: Недонстрированная функция переопределяет удаленную функцию "a :: operator ==" < /p>
< /blockquote>
https://en.cppreference.com/w/cpp/language/function:

Удаленная функция может быть переопределена только с помощью удаленных функций

Но на самом деле принимает программу с помощью
, но Clang. Дефолт «Оператор ==» неявно удален, потому что нет жизнеспособного «оператора ==» для базового класса 'a'

онлайн -демонстрация: https://gcc.godbolt.org/z/n83nge7dwобразно>

Подробнее здесь: https://stackoverflow.com/questions/795 ... l-function

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