On Thursday, 6 March 2014 at 18:36:12 UTC, Dejan Lekic wrote:

Template mixins can't contain statements, only declarations, because they
(template mixins) are a way to inject code into the context.

Therefore it makes sense to forbid statements, as they can't appear in ANY
context.

If I side-step slightly, the compiler does not appear to have difficulty coping:

import std.stdio;
import std.conv;

string codeString(string A, string B, int I)()
{
   enum n = I*3;
return "writeln(\""~A~"\"); writeln(\""~B~"\"); writefln(\"%d\","~to!string(n)~");";
}

void foo()
{
   mixin(codeString!("One", "Two", 1)());
   writeln("Hello world");
}

void main()
{
   foo();
}


Reply via email to