我能否以某种方式使用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中看过模板化的版本,但我们还不能使用这个库......