Mixin Expressions, can't evalutate string variable
Tomek Sowiński
just at ask.me
Thu Aug 5 12:14:24 PDT 2010
Andrej Mitrovic napisał:
> I think this should work:
>
> string s = "int x;";
> mixin(s);
>
> void main()
> {
>
> }
>
> But I get:
> testtest.d(11): Error: argument to mixin must be a string, not (s)
>
> I get a similar error with the template example from the docs:
>
> template GenStruct(string Name, string M1)
> {
> string GenStruct = "struct " ~ Name ~ "{ int " ~ M1 ~ "; }";
> }
>
> mixin(GenStruct!("Foo", "bar"));
>
> void main() { }
>
> testtest.d(27): Error: argument to mixin must be a string, not (GenStruct)
>
>
> This is really weird, I swear it worked for me a couple of days ago. :s
> Maybe I accidentally modified a library file, so I'll have a look.
> Meanwhile can someone succesfully compile these?
template GenStruct(string Name, string M1)
{
immutable string GenStruct = "struct " ~ Name ~ "{ int " ~ M1 ~ "; }";
}
It must be immutable to be seen as a template expression. Otherwise it's one mutable string declaration that happens to be named
same as the enclosing template.
Tomek
More information about the Digitalmars-d
mailing list