What the heck is wrong with CTFE's?
JS
js.mdnq at gmail.com
Mon Jul 8 04:56:39 PDT 2013
The following code inserts properties for each type,
auto name = "Value"~((i == 0) ? "" : to!string(i++));
always as the i == 0 evaluate to true.
My question is, why the heck is it so hard to use basic
programming structs inside CTFE's? I know that CTFE's have to
work at run time also, so there is a limitation, but:
1. obviously ints work because the code below works with i as a
counter but we can't do a simple compare on it... this seems like
a bug.
2. foreach can be used but a simple for loop can't... makes no
sense.
I know what the average response is going to be but hopefully
someone will surprise me with some useful.
mixin template PropertyBuilder(T...)
{
template _(TT...)
{
static string eval()
{
string s;
pragma(msg, TT);
int i = 0;
foreach(t; TT)
{
auto name = "Value"~((i > 0) ? "" : to!string(i++));
s = "@property "~t.stringof~" "~name~"();\n";
s ~="@property "~t.stringof~" "~name~"("~t.stringof~"
value);\n";
}
return s;
}
enum _ = eval();
pragma(msg, _);
}
mixin("mixin(_!T);");
}
interface a(MT...)
{
mixin PropertyBuilder!MT;
}
More information about the Digitalmars-d
mailing list