我可以使用typeid
/type_info
以某种方式检测某种类型是否是enum
(任何枚举数)吗?
以下可以很好地检测变量是否具有类型int
template<typename T>
bool is_int( T var )
{
return strcmp( typeid(T).name(), typeid(int).name() ) == 0;
}
但我不能对枚举使用类似的版本 - name() 返回的字符串在 Linux 和 Windows 之间有所不同
template<typename T>
bool is_enum( T var )
{
// can I use typeid here?
// eg. string_contains( typeid(var).name(), "enum" );
}
我在 Boost 中看到了模板化版本,但我们还不能使用这个库......