<分区>
当我提供的库的客户端使用我们不希望的模板类的特定特化时,是否有任何合理且可移植的方式在 C++ 中生成编译器警告?
与这个被标记为重复的问题相比,我只需要警告,而不是编译时错误。
标签 c++
<分区>
当我提供的库的客户端使用我们不希望的模板类的特定特化时,是否有任何合理且可移植的方式在 C++ 中生成编译器警告?
与这个被标记为重复的问题相比,我只需要警告,而不是编译时错误。
最佳答案
我可以重用 Does there exist a static_warning? 中的 STATIC_WARNING_TEMPLATE建议结合 boost::is_same 在使用特定模板参数时生成警告:
template<class T, class DisableWarning = void>
class Foo {
public:
STATIC_WARNING_TEMPLATE(FOO_WARNING,
(boost::is_same<DisableWarning, DislikedType>::value || !boost::is_same<T, DislikedType>::value),
"A warning")
使用此解决方案,用户可以在将 DisableWarning 定义为 DislikedType 时禁用警告。
关于c++ - 使用类的特定模板特化时的编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21862103/