英語版
このページの英語版を見る

dmd.templatesem

テンプレートの意味論。
Authors:
void templateDeclarationSemantic(Scope* sc, TemplateDeclaration tempdecl);
テンプレートの意味解析を行う。
Parameters:
Scope* sc コンテキスト
TemplateDeclaration tempdecl テンプレート宣言
MATCH matchWithInstance(Scope* sc, TemplateDeclaration td, TemplateInstance ti, ref Objects dedtypes, ArgumentList argumentList, int flag);
tiがこのTemplateDeclarationのインスタンスであるとする、 のパラメータの型を推論し、それらの型をdedtypes[]に格納する。 dedtypes[]に格納する。
Parameters:
Scope* sc コンテキスト
TemplateDeclaration td テンプレート
TemplateInstance ti tdのインスタンス
Objects dedtypes 推論された型で埋める
ArgumentList argumentList テンプレート・インスタンスへの引数
int flag 1 - ダミー型のため、semantic()を行わない。 2 - matchArg()で型を変更しない。
Returns:
マッチ・レベル。
bool evaluateConstraint(TemplateDeclaration td, TemplateInstance ti, Scope* sc, Scope* paramscope, Objects* dedargs, FuncDeclaration fd);
制約が満たされるかチェックする。
void formatParamsWithTiargs(ref TemplateParameters parameters, ref Objects tiargs, bool variadic, ref OutBuffer buf);
テンプレートパラメータのテキスト表現と引数を buf に追加する。
Parameters:
TemplateParameters parameters テンプレートパラメータ
Objects tiargs 対応するテンプレート引数
bool variadic 可変長引数リストの場合
OutBuffer buf テキストの出力先
Scope* createScopeForTemplateParameters(TemplateDeclaration td, TemplateInstance ti, Scope* sc);
TemplateInstanceのパラメータ用のスコープを作る tiのパラメータ用のスコープを作成する。
paramsym が NULL の場合、新しい ScopeDsymbol が paramsym の代わりに使われる。 の代わりに使用される。
Parameters:
TemplateDeclaration td のインスタンスである
TemplateInstance ti スコープを生成するパラメータの TemplateInstance。
Scope* sc tiの親スコープ
Returns:
tiのパラメータの新しいスコープ
MATCH leastAsSpecialized(Scope* sc, TemplateDeclaration td, TemplateDeclaration td2, ArgumentList argumentList);
の部分的な特殊化順序を決定する tdvs td2.
Parameters:
Scope* sc コンテキスト
TemplateDeclaration td 最初のテンプレート
TemplateDeclaration td2 番目のテンプレート
ArgumentList argumentList テンプレートへの引数
Returns:
MATCH - tdは少なくともtd2と同じくらい特殊である。 MATCH.nomatch - td2はtdよりも特殊である。
MATCHpair deduceFunctionTemplateMatch(TemplateDeclaration td, TemplateInstance ti, Scope* sc, ref FuncDeclaration fd, Type tthis, ArgumentList argumentList);
関数の引数を特定のテンプレート化された関数にマッチさせる。
Parameters:
TemplateDeclaration td テンプレート・インスタンスに対するテンプレート宣言
TemplateInstance ti テンプレート・インスタンス ti.tdtypesは、式/型から推測されるテンプレート引数に設定される。
Scope* sc インスタンス化スコープ
FuncDeclaration fd インスタンス化された関数宣言に設定される、部分的にインスタンス化された関数宣言
Type tthis 'this'引数 if !NULL
ArgumentList argumentList 関数への引数。
Returns:
初期テンプレート引数と推論されるテンプレート引数のペアにマッチする
RootObject declareParameter(TemplateDeclaration td, Scope* sc, TemplateParameter tp, RootObject o);
テンプレート・パラメータtpを値oで宣言し、スコープscに設置する。
void functionResolve(ref MatchAccumulator m, Dsymbol dstart, Loc loc, Scope* sc, Objects* tiargs, Type tthis, ArgumentList argumentList, void delegate(const(char)*) scope errorHelper = null);
関数の引数が与えられたら、どのテンプレート化された関数を展開するかを決定する。 を展開し、マッチした結果を返す。
Parameters:
MatchAccumulator m マッチング結果
Dsymbol dstart オーバーロードされた関数テンプレートのルート。
Loc loc インスタンス化の場所
Scope* sc インスタンス化の範囲
Objects* tiargs テンプレート引数の初期リスト
Type tthis もし!NULLなら、'this'ポインタ引数
ArgumentList argumentList 関数への引数
void delegate(const(char)*) scope errorHelper NULLでない場合、エラーメッセージを送信するデリゲート