Как я могу выдать предупреждение (но не ошибку), когда используется экземпляр шаблона по умолчанию, а не специализированC++

Программы на C++. Форум разработчиков
Anonymous
Как я могу выдать предупреждение (но не ошибку), когда используется экземпляр шаблона по умолчанию, а не специализирован

Сообщение Anonymous »


Я пишу полубиблиотеку (кусок кода, который уже давно используется в моей компании многими инженерами). Я хотел бы разместить предупреждение компиляции, если разработчик не специализируется на определенной шаблонной функции. Желаемое поведение заключается в том, чтобы оно не нарушало сборку (программное обеспечение будет работать нормально), но отсутствующая реализация должна быть четко видна в процессе сборки.

Я решил использовать ключевое слово deprecated, так как это единственное контекстно-зависимое предупреждение, которое я смог найти и отображающее тип экземпляра шаблона, чтобы можно было легко обнаружить ошибку.

Следующий код соответствует моему желаемому поведению и работает правильно:

bar() — это шаблонная функция, которая мне нужна

#include template [[deprecated("используя реализацию по умолчанию")]] void alert() {}; template void bar(); template void bar() { alert(); std::cout

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