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