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.

Module dmd.dtemplate

Compiler implementation of the D programming language.

Template implementation.

Documentation

https://dlang.org/phobos/dmd_dtemplate.html

Coverage

https://codecov.io/gh/dlang/dmd/src/master/src/dmd/dtemplate.d

Functions

NameDescription
arrayObjectIsError(args) Are any of the Objects an error?
definitelyValueParameter(e) 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).
functionResolve(m, dstart, loc, sc, tiargs, tthis, fargs, pMessage) Given function arguments, figure out which template function to expand, and return matching result.
getType(o) Try to get arg as a type.
isError(o) Is this Object an error?
isExpression(o) These functions substitute for dynamic_cast. dynamic_cast does not work on earlier versions of gcc.
matchArg(tp, instLoc, sc, tiargs, i, parameters, dedtypes, psparam) Match to a particular TemplateParameter.
reliesOnTident(t, tparams, iStart) Check whether the type t representation relies on one or more the template parameters.
unSpeculative(sc, o) 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.

Classes

NameDescription
TemplateAliasParameter
TemplateDeclaration [mixin] template Identifier (parameters) [Constraint]
TemplateInstance
TemplateMixin
TemplateParameter
TemplateThisParameter
TemplateTupleParameter
TemplateTypeParameter
TemplateValueParameter

Structs

NameDescription
TemplateInstanceBox 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

Authors

Walter Bright

License

Boost License 1.0