On Wednesday, 10 December 2014 at 12:57:07 UTC, Daniel Kozák via Digitalmars-d-learn wrote:
V Wed, 10 Dec 2014 12:35:44 +0000
Lemonfiend via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com>
napsáno:

On Wednesday, 10 December 2014 at 12:08:34 UTC, ketmar via Digitalmars-d-learn wrote:
> On Wed, 10 Dec 2014 11:52:11 +0000
> Lemonfiend via Digitalmars-d-learn > <digitalmars-d-learn@puremagic.com>
> wrote:
>
>> Consider the following:
>> >> ---
>> enum Foo { BAR, }
>> >> mixin template S(string s_)
>> {
>>        enum s = s_;
>> }
>> >> void main()
>> {
>>        mixin S!(Foo.BAR.stringof); // Error: identifier
>> 'stringof' of 'Foo.BAR.stringof' is not defined
>> >> enum e = Foo.BAR.stringof;
>>        mixin S!(e); // works fine
>> }
>> ---
>> >> Why doesn't the first work? And is there an alternative to >> the second version?
>
>   mixin S!((Foo.BAR).stringof);
>
> sorry, don't remember the parsing rule for this.

Wow, I didn't even consider that.. Thanks!

Note: Using .stringof for code generation is not recommended, as the internal representation of a type or expression can change between
different compiler versions.

http://dlang.org/property#stringof

Ah, thanks for the warning!

Reply via email to