Syntax: specType ident : specAlias = defaultAlias
Given: foo!(args) => name = foo tiargs = args
Syntax: this ident : specType = defaultType
Syntax: ident ...
Syntax: ident : specType = defaultType
Syntax: valType ident : specValue = defaultValue
Are any of the Objects an error?
Return true if e could be valid only as a template value parameter. Return false if it might be an alias or tuple. (Note that even in this case, it could still turn out to be a value).
Given function arguments, figure out which template function to expand, and return matching result. Input: m matching result dstart the root of overloaded function templates loc instantiation location sc instantiation scope tiargs initial list of template arguments tthis if !NULL, the 'this' pointer argument fargs arguments to function
Try to get arg as a type.
Is this Object an error?
These functions substitute for dynamic_cast. dynamic_cast does not work on earlier versions of gcc.
IsExpression can evaluate the specified type speculatively, and even if it instantiates any symbols, they are normally unnecessary for the final executable. However, if those symbols leak to the actual code, compiler should remark them as non-speculative to generate their code and link to the final executable.
This struct is needed for TemplateInstance to be the key in an associative array. Fixing https://issues.dlang.org/show_bug.cgi?id=15812 and https://issues.dlang.org/show_bug.cgi?id=15813 would make it unnecessary.
See Source File
$(DMDSRC _dtemplate.d)
Copyright (c) 1999-2016 by Digital Mars, All Rights Reserved
Compiler implementation of the D programming language.
Template implementation.