__traits(compiles) + mixin
Andrej Mitrovic
andrej.mitrovich at gmail.com
Tue Mar 5 00:04:11 PST 2013
On Tuesday, 5 March 2013 at 07:53:15 UTC, cal wrote:
> I'm confused about this:
>
> import std.conv;
>
> void main()
> {
> enum s = "`1`.to!int;";
> enum c = __traits(compiles, mixin("{auto a = new
> "~s~";}")); // line 1
> mixin("auto a = "~s~";");
> // line 2
> }
>
> This does not compile, giving errors about instantiating
> std.conv.to!(int).to!(string). If I switch the order of lines 1
> and 2 it compiles. Is this a bug or something I don't
> understand about __traits(compiles)?
You can't test declarations inside of __traits(compiles), only
expressions. It's in the docs:
http://dlang.org/traits.html#compiles
More information about the Digitalmars-d-learn
mailing list