Использование [[deprecated]]
и [[deprecated(message)]]
стандартных атрибутов (доступно с C ++ 14) создает желаемый эффект в Visual Studio как для использования устаревшего метода, так и для попытки переопределениявыдав предупреждение C4996 (которое можно игнорировать).Я не могу говорить о других компиляторах, я ожидаю, так как это стандарт, они должны также соответствовать.
class Base
{
public:
[[deprecated("dont use, deprecated")]] virtual void foo()
{
}
};
class Derived : public Base
{
public:
void foo() override
{
}
};
int main()
{
Base b;
b.foo();
}
Это выдаст 2 предупреждения, одно для переопределения и одно для попытки использования,