template <class T>
struct make_signed
{
typedef see-below type;
};
type: Если T - это подписанный тип целого, то тот же тип, что и T, если T - неподписанный целочисленный тип, то соответствующий подписанный тип. В противном случае, если T является перечисленным или типом символов (char или wchar_t), то подписанный тип целых чисел с той же шириной, что и T.
Если у T есть какие-либо квалифицеры, то они также присутствуют на типе результата.
Запросы: T должен быть целочисленным или перечисленным типом, и не должен быть типом дурака.
C++ Standard Reference: 3.9.1.
Совместимость компилятора: Все нынешние компиляторы поддерживаются этой чертой.
Заведующий: #include <boost/type_traits/make_signed.hpp>>>>>>>>>>
Table 1.23. Examples
|
Выражение
|
Тип вывода
|
make_signed<int>::type |
int |
make_signed<unsigned int const>::type<316> |
int const |
make_signed<const unsigned long long>::type |
const long long |
make_signed<my_enum>::type |
Подписанный тип целого с той же шириной, что и энум. |
make_signed<wchar_t>::type |
Подписанный целый тип с той же шириной, что и wchar_t. |