View source code
							
							
						
								Display the source code in dmd/dtemplate.d from which this
								page was generated on github.
							
						
							Report a bug
							
						
								If you spot a problem with this page, click here to create a
								Bugzilla issue.
							
						
							
								Improve this page
							
							
					
								Quickly fork, edit online, and submit a pull request for this page.
								Requires a signed-in GitHub account. This works well for small changes.
								If you'd like to make larger changes you may want to consider using
								local clone.
							
						Class dmd.dtemplate.TemplateInstance
				
						
					
				Constructors
| Name | Description | 
|---|---|
| this(loc, td, tiargs) | This constructor is only called when we figured out which function template to instantiate. | 
Fields
| Name | Type | Description | 
|---|---|---|
| cppnamespace | CPPNamespaceDeclaration | C++ namespace this symbol belongs to | 
| localNum | ushort | perturb mangled name to avoid collisions with those in FuncDeclaration.localsymtab | 
Properties
| Name | Type | Description | 
|---|---|---|
| gagged[get] | bool | if the instantiation is done with error gagging | 
| havetempdecl[get] | bool | if used second constructor | 
| semantictiargsdone[get] | bool | has semanticTiargs() been done? | 
Methods
| Name | Description | 
|---|---|
| appendToModuleMember() | Append 'this' to the specific module members[] | 
| declareParameters(sc) | Declare parameters of template instance, initialize them with the template instance arguments. | 
| equalsx(ti) | Compare proposed template instantiation with existing template instantiation. Note that this is not commutative because of the auto ref check. | 
| findBestMatch(sc, fargs) | Find the TemplateDeclaration that matches this TemplateInstance best. | 
| findTempDecl(sc, pwithsym) | Find template declaration corresponding to template instance. | 
| genIdent(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. | 
| getIdent() | Lazily generate identifier for template instance. This is because 75% of the ident's are never needed. | 
| hasNestedArgs(args, isstatic) | Determines if a TemplateInstance will need a nested generation of the TemplateDeclaration. Sets enclosing property if so, and returns != 0; | 
| isDiscardable() | |
| needsCodegen() | Returns true if this is not instantiated in non-root module, and is a part of non-speculative instantiatiation. | 
| needsTypeInference(sc, flag) | Determine if template instance is really a template function, and that template function needs to infer types from the function arguments. | 
| printInstantiationTrace(cl) | Given an error instantiating the TemplateInstance, give the nested TemplateInstance instantiations that got us here. Those are a list threaded into the nested scopes. | 
| semanticTiargs(loc, sc, tiargs, flags) | Run semantic of tiargs as arguments of template. | 
| semanticTiargs(sc) | Run semantic on the elements of tiargs. | 
| updateTempDecl(sc, s) | Confirm s is a valid template, then store it. | 
| _foreach(sc, members, dg, pn) | Expands attribute declarations in members in depth first order. Calls dg(size_t symidx, Dsymbol *sym) for each member. If dg returns !=0, stops and returns that value else returns 0. Use this function to avoid the O(N + N^2/2) complexity of calculating dim and calling N times getNth. | 
| accept(v) | |
| addComment(comment) | Add documentation comment to Dsymbol. Ignore NULL comments. | 
| arraySyntaxCopy(a) | Do syntax copy of an array of Dsymbol's. | 
| factory(classname) | Create instance of class specified by the fully qualified name classname. The class must either have no constructors or have a default constructor. | 
| findGetMembers() | Look for member of the form: const(MemberInfo)[] getMembers(string); Returns NULL if not found | 
| followInstantiationContext(p1, p2) | Returns true if any of the symbols p1orp2resides in the enclosing
 instantiation scope ofthis. | 
| getAccessModule() | Determine which Module a Dsymbol is in, as far as access rights go. | 
| getModule() | Determine which Module a Dsymbol is in. | 
| hasPointers() | Is Dsymbol a variable that contains pointers? | 
| hasStaticCtorOrDtor() | Return true if any of the members are static ctors or static dtors, or if any members have members that are. | 
| inNonRoot() | Returns true if this symbol is defined in a non-root module without instantiation. | 
| isMember() | Returns an AggregateDeclaration when toParent() is that. | 
| isMember2() | Returns an AggregateDeclaration when toParent2() is that. | 
| isMemberDecl() | Returns an AggregateDeclaration when toParentDecl() is that. | 
| isMemberLocal() | Returns an AggregateDeclaration when toParentLocal() is that. | 
| oneMember(ps, ident) | Determine if this symbol is only one. | 
| oneMembers(members, ps, ident) | Same as Dsymbol::oneMember(), but look at an array of Dsymbols. | 
| opCmp(o) | Compare with another Object obj. | 
| opEquals(o) | Test whether thisis equal too.
 The default implementation only compares by identity (using theisoperator).
 Generally, overrides foropEqualsshould attempt to compare objects by their contents. | 
| pastMixin() | pastMixinreturns the enclosing symbol if this is a template mixin. | 
| search(loc, ident, flags) | This function is #1 on the list of functions that eat cpu time. Be very, very careful about slowing it down. | 
| searchX(loc, sc, id, flags) | Search for identifier id as a member of this.idmay be a template instance. | 
| setScope(sc) | Set scope for future semantic analysis so we can deal better with forward references. | 
| size(loc) | |
| symtabLookup(s, id) | Look up identifier in symbol table. | 
| syntaxCopy(s) | Copy the syntax. Used for template instantiations. If s is NULL, allocate the new object, otherwise fill it in. | 
| toAlias() | If this symbol is really an alias for another, return that other. If needed, semantic() is invoked due to resolve forward reference. | 
| toAlias2() | Resolve recursive tuple expansion in eponymous template. | 
| toHash() | Compute hash function for Object. | 
| toParent() | parentfield returns a lexically enclosing scope symbol this is a member of. | 
| toParent2() | parentfield returns a lexically enclosing scope symbol this is a member of. | 
| toParentDecl() | parentfield returns a lexically enclosing scope symbol this is a member of. | 
| toParentLocal() | parentfield returns a lexically enclosing scope symbol this is a member of. | 
| toParentP(p1, p2) | Returns the declaration scope scope of thisunless any of the symbolsp1orp2resides in its enclosing instantiation scope then the
 latter is returned. | 
| toString() | |
| toString() | Convert Object to a human readable string. | 
| visible() | 
https
//dlang.org/spec/template.html#explicit_tmp_instantiation
Given
foo!(args) => name = foo tiargs = args
Authors
License
					Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.