在类模板中,如何检测模板参数是否为枚举类型?
以下是我想要做的简化示例:http://ideone.com/3CafY。你将如何实现IsTEnum()以使输出正确?
我觉得应该有一个解决这个问题的boost函数,但我不允许在当前项目中使用boost(也不是标准库std :: functions)。
尽管如此,我也有兴趣知道使用boost的两种方法(即使解决方案不处理指针或const类型)。
答案 0 :(得分:7)
您可以使用C ++ 11的std::is_enum来实现此目的。你说得对,the same solution是正确的。如果你不能使用boost或C ++ 11,你可以随时查看实现的灵感。
答案 1 :(得分:0)
如果您不能使用C ++ 11,请写:
#include <tr1/type_traits>
#include <iostream>
using namespace std;
int main() {
cout << tr1::is_enum<int>::value << "\n";
return 0;
}
命名空间tr1包含一些来自C ++ 11的头文件,可以在预标准C ++中使用。