Концепции 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

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