TemplateMixin

extern (C++) final
class TemplateMixin : TemplateInstance {
TypeQualified tqual;
}

Inherited Members

From TemplateInstance

semantictiargsdone
bool semantictiargsdone [@property getter]

has semanticTiargs() been done?

havetempdecl
bool havetempdecl [@property getter]

if used second constructor

gagged
bool gagged [@property getter]

if the instantiation is done with error gagging

printInstantiationTrace
void printInstantiationTrace(Classification cl, const(uint) max_shown)

Given an error instantiating the TemplateInstance, give the nested TemplateInstance instantiations that got us here. Those are a list threaded into the nested scopes.

getIdent
Identifier getIdent()

Lazily generate identifier for template instance. This is because 75% of the ident's are never needed.

equalsx
bool equalsx(TemplateInstance ti)

Compare proposed template instantiation with existing template instantiation. Note that this is not commutative because of the auto ref check.

isDiscardable
bool isDiscardable()
needsCodegen
bool needsCodegen()

Returns true if this is not instantiated in non-root module, and is a part of non-speculative instantiatiation.

findTempDecl
bool findTempDecl(Scope* sc, WithScopeSymbol* pwithsym)

Find template declaration corresponding to template instance.

updateTempDecl
bool updateTempDecl(Scope* sc, Dsymbol s)

Confirm s is a valid template, then store it. Input: sc s candidate symbol of template. It may be: TemplateDeclaration FuncDeclaration with findTemplateDeclRoot() != NULL OverloadSet which contains candidates

semanticTiargs
bool semanticTiargs(Loc loc, Scope* sc, Objects* tiargs, int flags, TupleDeclaration atd)

Run semantic of tiargs as arguments of template. Input: loc sc tiargs array of template arguments flags 1: replace const variables with their initializers 2: don't devolve Parameter to Type atd tuple being optimized. If found, it's not expanded here but in AliasAssign semantic.

semanticTiargs
bool semanticTiargs(Scope* sc)

Run semantic on the elements of tiargs. Input: sc

findBestMatch
bool findBestMatch(Scope* sc, ArgumentList argumentList)

Find the TemplateDeclaration that matches this TemplateInstance best.

needsTypeInference
bool needsTypeInference(Scope* sc, int flag)

Determine if template instance is really a template function, and that template function needs to infer types from the function arguments.

hasNestedArgs
bool hasNestedArgs(Objects* args, bool isstatic)

Determines if a TemplateInstance will need a nested generation of the TemplateDeclaration. Sets enclosing property if so, and returns != 0;

appendToModuleMember
Dsymbols* appendToModuleMember()

Append 'this' to the specific module members[]

declareParameters
void declareParameters(Scope* sc)

Declare parameters of template instance, initialize them with the template instance arguments.

genIdent
Identifier genIdent(Objects* args)

This instance needs an identifier for name mangling purposes. Create one by taking the template declaration name and adding the type signature for it.

Meta