Template mixin enum stringof

Daniel Kozák via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Dec 10 04:56:53 PST 2014


V Wed, 10 Dec 2014 12:35:44 +0000
Lemonfiend via Digitalmars-d-learn <digitalmars-d-learn at 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 at 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



More information about the Digitalmars-d-learn mailing list