Предупреждать только когда * вызывает * устаревший метод

Я хочу отметить чистый виртуальный метод в базовом классе deprecatedи получить предупреждение компилятора, когда кто-то пытается вызвать метод (или его переопределения) где-то, но не, как в настоящее время, для каждого объявления переопределения — потому что метод является чисто виртуальным в базовом классе, все дочерние классы должен реализовать его так, чтобы он был инстанцируемым, но это означает, что каждое из этих переопределений выдает (или несколько) предупреждение (я) компилятора, которое как бы спамит выходные данные.
Поэтому я хотел бы выдать предупреждение только тогда, когда метод (или одно из переопределений) находится в процессе называется.

Это возможно как-то без прыжков через обручи *?

PS: я отмечаю базовый метод как устаревший, используя следующий макрос:

#if defined(_MSC_VER)
#define DEPRECATED __declspec(deprecated)
#elif defined(__GNUC__) || defined(__clang__)
#define DEPRECATED __attribute__((deprecated))
#else
#pragma message("WARNING: DEPRECATED macro not implemented for this compiler")
#define DEPRECATED
#endif

… и я сейчас собираю в VS2015.
Предупреждения компилятора выводятся и в том случае, если я помечаю только базовый метод как устаревший, и если я использую макрос как для базового метода, так и для переопределений.

*) как вставка сообщения (…) или статического утверждения в определение функции каждого переопределения и вставка их, или что-то в этом роде … Я не думаю, что это того стоит.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]