コンパイル時に型情報を取得する関数(クラス)。
static_assert と組み合わせることでユーザーに分かりやすいエラーを出したり、コンパイル時処理に利用できます。
std::true_type、std::false_type のいずれかを継承するため、value メンバ変数を使用して、判定結果をコンパイル時に取得できます。
各メタ関数は Udon::Traits 名前空間に属します。
| 名前 | 説明 | ヘッダーファイル |
|---|---|---|
| IsWriter<T> | T が送信クラス要件を満たす場合 std::true_type 、それ以外は std::false_type を継承。 | Udon/Traits/ReaderWriterTraits.hpp |
| IsReader<T> | T が受信クラス要件を満たす場合 std::true_type 、それ以外は std::false_type を継承。 | Udon/Traits/ReaderWriterTraits.hpp |
| IsSerializable<T> | T がシリアライズ可能な場合 std::true_type 、それ以外は std::false_type を継承。 | Udon/Serializer/SerializerTraits.hpp |
| AlwaysFalse<T> | 常に std::false_type を継承。(遅延 static_assert) | Udon/Traits/AlwaysFalse.hpp |
| HasMemberFunctionBegin<T> | T に begin メンバ関数が存在する場合 std::true_type 、それ以外は std::false_type を継承。 | Udon/Traits/HasMemberFunction.hpp |
| HasMemberFunctionUpdate<T> | T に update メンバ関数が存在する場合 std::true_type 、それ以外は std::false_type を継承。 | Udon/Traits/HasMemberFunction.hpp |
| HasMemberFunctionShow<T> | T に show メンバ関数が存在する場合 std::true_type 、それ以外は std::false_type を継承。 | Udon/Traits/HasMemberFunction.hpp |
| HasMemberFunctionShowRaw<T> | T に showRaw メンバ関数が存在する場合 std::true_type 、それ以外は std::false_type を継承。 | Udon/Traits/HasMemberFunction.hpp |
AlwaysFalse<T> を使用することで、テンプレート関数、クラスが実体化されたときに限り static_assert を失敗させることができる。
static_assert(false, "") は常に失敗してしまうので、失敗を実体化のタイミングまで遅延させる。
特定のメンバ関数が存在する場合呼び出し、存在しない場合何もしない関数です。この関数を使用することで、特定のメンバ関数の有無に関係なく一様な記述が可能になります。
各関数は Udon::Traits 名前空間に属します。
メタ関数 HasMemberFunction~~ が定義されているヘッダーファイルに定義されています。
| 名前 | 説明 | 戻り値型 | 引数型 |
|---|---|---|---|
| MaybeInvokeBegin(rhs) | rhs.begin() を呼び出せる場合呼び出す | 不定 | void |
| MaybeInvokeUpdate(rhs) | rhs.update() を呼び出せる場合呼び出す | 不定 | void |
| MaybeInvokeShow(rhs) | rhs.show() const を呼び出せる場合呼び出す | 不定 | void |
| MaybeInvokeShowRaw(rhs) | rhs.showRaw() const を呼び出せる場合呼び出す | 不定 | void |