std.traits
コンパイル時に 型の情報を取り出すためのテンプレートです。- template ReturnType(alias dg)
- 関数か、関数ポインタ
から返値の型を取得します。
Example:
import std.traits; int foo(); ReturnType!(foo) x; // x は int 型
- template ParameterTypeTuple(alias dg)
template ParameterTypeTuple(dg) - 関数か、関数ポインタ、あるいはデリゲートから
引数の型をタプルとして取得します。
Example:
import std.traits; int foo(int, long); void bar(ParameterTypeTuple!(foo)); // void bar(int, long); の宣言 void abc(ParameterTypeTuple!(foo)[1]); // void abc(long); の宣言
- template FieldTypeTuple(S)
- 構造体かクラスをフィールドのタプルに変換したときの型を取得します。
これは、仮想関数テーブルへのポインタのような隠しフィールドを除いた、
メモリ空間を消費するフィールドのみで構成される
タプルとなります。
- template BaseTypeTuple(A)
- 指定したクラスやインターフェイスの基底型と基底インターフェイスからなる
型タプルを返します。
Example:
import std.traits, std.typetuple, std.stdio; interface I { } class A { } class B : A, I { } void main() { alias BaseTypeTuple!(B) TL; writefln(typeid(TL)); // (A,I) を表示 }
- template isStaticArray(T)
- Tが静的配列かどうかを判定します。
- template isAssociativeArray(T)
- T が組み込みの連想配列型かどうかを判定します。
- template isExpressionTuple(T...)
- タプル T が式タプルかどうか判定
Public Domain