Концепции C++/требования к предложениям и переопределения виртуальных функцийC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Концепции C++/требования к предложениям и переопределения виртуальных функций

Сообщение Anonymous »

Я попытался написать следующий код, но он был отклонен компилятором:

Код: Выделить всё

#include 

struct Base {
virtual void f() {}
};

template 
struct Derived : Base {
void f() requires std::is_same_v override {}
};
Соответствующий раздел стандарта я нашел здесь:

Код: Выделить всё

11.7.3 Virtual functions
6 A virtual function shall not have a trailing requires-clause ([dcl.decl]).
[Example 5:
template
struct A {
virtual void f() requires true;       // error: virtual function cannot be constrained ([temp.constr.decl])
};
— end example]
но я не понимаю мотивации этого. Поскольку для производного класса совершенно разумно не переопределять виртуальную функцию базового класса, почему не считается правильным решать, существует ли это переопределение, на основе ограничения (время компиляции)?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -overrides
Ответить

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

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

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

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

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