コンパイル時に型情報を取得する関数(クラス)。
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 |
MessageType
というメンバ型名を持つsetMessage()
メンバ関数を持ち、戻り値が void
、引数型が const MessageType&
であるMessageType
というメンバ型名を持つgetMessage() const
メンバ関数を持ち、戻り値が Udon::Optional<MessageType>
、引数が存在しないAlwaysFalse<T>
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 |