C++ named requirements: BinaryTypeTrait (since C++11)
From cppreference.net
C++
C++ named requirements
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A BinaryTypeTrait は、2つのテンプレート型パラメータ間の関係を std::integral_constant (通常は std::bool_constant )の特殊化で記述するクラステンプレートです。
要件
- DefaultConstructible および CopyConstructible であること。
- 2つのテンプレート型パラメータを取ること(追加のテンプレートパラメータは任意で許可される)。
- std::integral_constant の特殊化から公開かつ明確に継承されていること。これは 基底特性 として知られる。
- 基底特性 のメンバ名が隠蔽されておらず、明確に利用可能であること。
標準ライブラリ
以下の標準ライブラリクラステンプレートは BinaryTypeTrait を満たします:
|
(C++11)
|
2つの型が同じかどうかをチェックする
(クラステンプレート) |
|
(C++11)
|
ある型が別の型の基底クラスかどうかをチェックする
(クラステンプレート) |
|
(C++26)
|
ある型が別の型の仮想基底クラスかどうかをチェックする
(クラステンプレート) |
|
(C++11)
(C++20)
|
ある型が別の型に変換可能かどうかをチェックする
(クラステンプレート) |
|
(C++20)
|
2つの型が
レイアウト互換
かどうかをチェックする
(クラステンプレート) |
|
ある型が別の型の
ポインター相互変換可能
な(初期)基底クラスかどうかをチェックする
(クラステンプレート) |
|
|
型が指定された引数型で(
std::invoke
によって)呼び出し可能かどうかをチェックする
(クラステンプレート) |
|
|
(C++11)
|
指定された型がuses-allocator構築をサポートするかどうかをチェックする
(クラステンプレート) |