【发布时间】:2010-11-28 20:23:16
【问题描述】:
我有一个模板函数,我希望在不同的地方为不同的类型进行模板化。
问题是我想在编译时知道给定类型是否有专门化以两种不同的方式生成另一个模板。
template<typename T>
bool tobool(const T&){ throw Exception("Can't cast to bool");};
template<> bool tobool<bool>(const bool &value){ return value;}
我知道你可以像here 那样测试函数是否存在。
有没有机会测试一下 tobool 是否被专门化了?
假设我想生成一个 isbool(),如果 tobool() 已经被特化则返回 true,否则返回 false。
【问题讨论】:
-
我理解正确吗? :您想要一个元函数,它为每种类型 T 显示是否为 T 专门设置了工具?
-
是的,我需要知道 T 使用的是通用工具还是专用工具。
-
所以在编译时你可以检查它的存在并处理结果?
标签: c++ templates g++ specialization template-specialization