std::make_unsigned
From cppreference.com
| ヘッダ <type_traits> で定義 |
||
| template< class T > struct make_unsigned; |
(C++11以降) | |
Tが整数型(boolを除く)または列挙型の場合、メンバ型typeを提供します。これは、Tに対応する符号なし整数型であり、同じcv修飾子を持ちます。
Tが符号付きまたは符号なしのchar、short、int、long、long longの場合、このリストからTに対応する符号なし型が提供されます。
Tが列挙型またはchar、wchar_t、char8_t(C++20以降)、char16_t、char32_tの場合、Tと同じsizeofを持ち、ランクが最小の符号なし整数型が提供されます。
|
それ以外の場合、動作は未定義です。 |
(C++20まで) |
|
それ以外の場合、プログラムは不適格となります。 |
(C++20以降) |
プログラムがstd::make_unsignedの特殊化を追加した場合、動作は未定義です。
目次 |
[編集] メンバ型
| 名前 | 定義 |
type
|
Tに対応する符号なし整数型 |
[編集] ヘルパー型
| template< class T > using make_unsigned_t = typename make_unsigned<T>::type; |
(C++14以降) | |
[編集] 例
このコードを実行
#include <type_traits> int main() { using uchar_type = std::make_unsigned_t<char>; using uint_type = std::make_unsigned_t<int>; using ulong_type = std::make_unsigned_t<volatile long>; static_assert( std::is_same_v<uchar_type, unsigned char> and std::is_same_v<uint_type, unsigned int> and std::is_same_v<ulong_type, volatile unsigned long> ); }
[編集] 関連項目
| (C++11) |
型が符号付き算術型であるかをチェックする (クラステンプレート) |
| (C++11) |
型が符号なし算術型であるかをチェックする (クラステンプレート) |
| (C++11) |
与えられた整数型に対応する符号付き型を取得する (クラステンプレート) |