名前空間
変種
操作

std::make_signed

From cppreference.com
< cpp‎ | types
 
 
メタプログラミングライブラリ
型特性
型のカテゴリ
(C++11)
(C++11)(DR*)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11) 
(C++11)
(C++11)
型のプロパティ
(C++11)
(C++11)
(C++14)
(C++11)(C++26で非推奨)
(C++11)(C++20まで*)
(C++11)(C++20で非推奨)
(C++11)
型特性定数
メタ関数
(C++17)
サポートされている操作
関係とプロパティクエリ
型の変更
(C++11)(C++11)(C++11)
make_signed
(C++11)
型の変換
(C++11)(C++23で非推奨)
(C++11)(C++23で非推奨)
(C++11)
(C++11)(C++20まで*)(C++17)

(C++11)
(C++17)
コンパイル時有理数演算
コンパイル時整数シーケンス
 
ヘッダ <type_traits> で定義
template< class T >
struct make_signed;
(C++11以降)

Tが(boolを除く)整数型または列挙型の場合、メンバー型エイリアスtypeを提供します。これは、同じcv修飾子を持つTに対応する符号付き整数型です。

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

Tが列挙型またはcharwchar_tchar8_t(C++20以降)char16_tchar32_tの場合、Tと同じsizeofを持つ、最小のランクの符号付き整数型が提供されます。

それ以外の場合、動作は未定義です。

(C++20まで)

それ以外の場合、プログラムは不適格となります。

(C++20以降)

プログラムがstd::make_signedの特殊化を追加した場合、動作は未定義です。

目次

[編集] メンバー型

名前 定義
type Tに対応する符号付き整数型

[編集] ヘルパー型

template< class T >
using make_signed_t = typename make_signed<T>::type;
(C++14以降)

[編集]

#include <type_traits>
 
enum struct E : unsigned short {};
 
int main()
{
    using char_type = std::make_signed_t<unsigned char>;
    using int_type  = std::make_signed_t<unsigned int>;
    using long_type = std::make_signed_t<volatile unsigned long>;
    using enum_type = std::make_signed_t<E>;
 
    static_assert(
        std::is_same_v<char_type, signed char> and
        std::is_same_v<int_type, signed int> and
        std::is_same_v<long_type, volatile signed long> and
        std::is_same_v<enum_type, signed short>
    );
}

[編集] 関連項目

(C++11)
型が符号付き算術型であるかをチェックする
(クラステンプレート) [編集]
型が符号なし算術型であるかをチェックする
(クラステンプレート) [編集]
与えられた整数型に対応する符号付き型を取得する
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)