I am looking to define a template class whose template parameter will always be an integer type. The class will contain two members, one of type T
, and the other as
If you can't or don't want to depend on TR1/C++0x features, Boost.TypeTraits also offers you make_unsigned<>
et al.
The answer is in <type_traits>
For determining the signed-ness of a type use std::is_signed
and std::is_unsigned
.
For adding/removing signed-ness, there is std::make_signed
and std::make_unsigned
.