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
T
If you can't or don't want to depend on TR1/C++0x features, Boost.TypeTraits also offers you make_unsigned<> et al.
make_unsigned<>