October 17, 2015 Caching of Template Instantiations | ||||
---|---|---|---|---|
| ||||
Does DMD cache template instantiations? That is, is it preferred to do, for instance, either static if (isIntegral!T && isUnsigned!(T)) {} else static if (isIntegral!T && isSigned!(T)) {} or enum integral = isIntegral!T; static if (integral && isUnsigned!(T)) {} else static if (integral && isSigned!(T)) {} |
October 17, 2015 Re: Caching of Template Instantiations | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nordlöw | On Saturday, 17 October 2015 at 07:48:39 UTC, Nordlöw wrote: > Does DMD cache template instantiations? Yes, and it's required by the spec: "Multiple instantiations of a TemplateDeclaration with the same TemplateArgumentList all will refer to the same instantiation." http://dlang.org/template.html > > That is, is it preferred to do, for instance, either > > static if (isIntegral!T && isUnsigned!(T)) {} > else static if (isIntegral!T && isSigned!(T)) {} > > or > > enum integral = isIntegral!T; > static if (integral && isUnsigned!(T)) {} > else static if (integral && isSigned!(T)) {} It *might* make a little difference if you have thousands of instantiations, because for each instantiation the compiler needs to check whether it has already instantiated the templation with that combination of arguments, but I wouldn't worry about it. |
Copyright © 1999-2021 by the D Language Foundation