2

在类模板中,如何检测模板参数是否为枚举类型?

这是我想做的一个简化示例:http: //ideone.com/3CafY。您将如何实现 IsTEnum() 以使输出正确?

我觉得应该有一个 boost 函数可以解决这个问题,但是我不允许在我当前的项目中使用 boost(也不是标准库 std:: 函数)。
尽管如此,我也有兴趣知道这两种方法是否使用 boost(即使解决方案不处理指针或 const 类型)。

4

2 回答 2

7

为此,您可以使用 C++11 的std::is_enum。你是对的,那个 boost 有同样的解决方案。如果您不能使用 boost 或 C++11,您可以随时查看实现以获取灵感。

于 2012-06-29T05:58:10.727 回答
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++。

于 2012-06-29T14:20:32.790 回答