specializing template with string variable in CTFE

via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Oct 26 13:16:18 PDT 2014


On Sunday, 26 October 2014 at 19:32:28 UTC, ketmar via 
Digitalmars-d-learn wrote:
> On Sun, 26 Oct 2014 12:46:06 +0000
> via Digitalmars-d-learn <digitalmars-d-learn at puremagic.com> 
> wrote:
>
>> The second possibility doesn't exist right now. The core 
>> problem is that the compiler needs to be able to generate 
>> runtime code for `buildWriter()`, because it's just a function 
>> after all.
> but it's templated function, and it's never called in runtime, 
> so
> compiler never needs to generate code for it.

The documentation specifically says that:
"Any functions that execute at compile time must also be 
executable at run time. [...] This means that the semantics of a 
function cannot depend on compile time values of the function."

http://dlang.org/function.html

I can imagine it would be difficult to implement it differently, 
because in effect the compiler would need to create a new 
instance of the function for every call, with each instance 
potentially being completely different (consider `static if` over 
CTFE runtime parameters).


More information about the Digitalmars-d-learn mailing list