0
有没有办法在C++ 03编译器中获得std :: underlying_type的等价物?C++中的C++枚举的基础类型03
我知道在boost :: type_traits中有一些支持,但是那里没有全功能的转换器。
有没有办法在C++ 03编译器中获得std :: underlying_type的等价物?C++中的C++枚举的基础类型03
我知道在boost :: type_traits中有一些支持,但是那里没有全功能的转换器。
this怎么样?
template< class TpEnum >
struct UnderlyingType
{
typedef typename conditional<
TpEnum(-1) < TpEnum(0),
typename make_signed<TpEnum>::type,
typename make_unsigned<TpEnum>::type
>::type type;
};
你可以找到它的构建块(有条件的,make_signed,在升压make_unsigned :: type_traits)
这是实现在C++编译器11一个underlying_tpye非常奇特的方式。不过,我有一个C++ 03编译器,没有条件或make_signed – Sam 2014-10-01 18:40:38
我只是想着@sammy! 'make_signed'需要C++ 11。抱歉。我应该删除我的答案吗? :/ – gsamaras 2014-10-01 18:41:38
那么'make_signed' @BillyONeal呢? :/我想不出一种不使用C++ 11的方式来实现它。 – gsamaras 2014-10-01 18:43:22