Namespaces
Variants

std:: make_unsigned

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
Type properties
(C++11)
(C++11)
(C++14)
(C++11) (deprecated in C++26)
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
(C++17)
Supported operations
Relationships and property queries
Type modifications
(C++11) (C++11) (C++11)
make_unsigned
(C++11)
Type transformations
(C++11) (deprecated in C++23)
(C++11) (deprecated in C++23)
(C++11)
(C++11) ( until C++20* ) (C++17)

Compile-time rational arithmetic
Compile-time integer sequences
ヘッダーで定義 <type_traits>
template < class T >
struct make_unsigned ;
(C++11以降)

T が( bool を除く)整数型または列挙型の場合、同じcv修飾子を持つ T に対応する符号なし整数型であるメンバーtypedef type を提供します。

T が符号付きまたは符号なしの char short int long long long である場合、このリストから T に対応する符号なし型が提供されます。

T が列挙型または char wchar_t char8_t (C++20以降) char16_t char32_t である場合、 T と同じ sizeof を持つ最小の ランク の符号なし整数型が提供される。

そうでない場合、動作は未定義です。

(until C++20)

そうでない場合、プログラムは不適格です。

(since 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)
型が符号付き算術型かどうかをチェックする
(クラステンプレート)
型が符号なし算術型かどうかをチェックする
(クラステンプレート)
指定された整数型に対応する符号付き型を取得する
(クラステンプレート)