Как я могу выдать предупреждение (но не ошибку), когда используется экземпляр шаблона по умолчанию, а не специализирован ⇐ C++
-
Anonymous
Как я могу выдать предупреждение (но не ошибку), когда используется экземпляр шаблона по умолчанию, а не специализирован
Я пишу полубиблиотеку (кусок кода, который уже давно используется в моей компании многими инженерами). Я хотел бы разместить предупреждение компиляции, если разработчик не специализируется на определенной шаблонной функции. Желаемое поведение заключается в том, чтобы оно не нарушало сборку (программное обеспечение будет работать нормально), но отсутствующая реализация должна быть четко видна в процессе сборки.
Я решил использовать ключевое слово deprecated, так как это единственное контекстно-зависимое предупреждение, которое я смог найти и отображающее тип экземпляра шаблона, чтобы можно было легко обнаружить ошибку.
Следующий код соответствует моему желаемому поведению и работает правильно:
bar() — это шаблонная функция, которая мне нужна
#include template [[deprecated("используя реализацию по умолчанию")]] void alert() {}; template void bar(); template void bar() { alert(); std::cout
Я пишу полубиблиотеку (кусок кода, который уже давно используется в моей компании многими инженерами). Я хотел бы разместить предупреждение компиляции, если разработчик не специализируется на определенной шаблонной функции. Желаемое поведение заключается в том, чтобы оно не нарушало сборку (программное обеспечение будет работать нормально), но отсутствующая реализация должна быть четко видна в процессе сборки.
Я решил использовать ключевое слово deprecated, так как это единственное контекстно-зависимое предупреждение, которое я смог найти и отображающее тип экземпляра шаблона, чтобы можно было легко обнаружить ошибку.
Следующий код соответствует моему желаемому поведению и работает правильно:
bar() — это шаблонная функция, которая мне нужна
#include template [[deprecated("используя реализацию по умолчанию")]] void alert() {}; template void bar(); template void bar() { alert(); std::cout
Мобильная версия