__traits(compiles) + mixin
simendsjo
simendsjo at gmail.com
Tue Mar 5 00:10:09 PST 2013
On Tuesday, 5 March 2013 at 08:04:12 UTC, Andrej Mitrovic wrote:
> 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
The errormessage is rather cryptic though.. Makes it look like
there is something with conv rather than compiles.
More information about the Digitalmars-d-learn
mailing list