Mixin template, "no identifier for declarator"

SimonN via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Oct 27 00:56:49 PDT 2015


Hi,

I'd like to generate several very similar class methods with a 
mixin template.
The mixin template shall take alias parameters, so that different 
methods can
bind it to different fields. Reduced problem case:

     class A {
         int myField;

         mixin template fieldSetter(alias whatField)
         {
             whatField = newVal;
         }

         int setMyField(in int newVal)
         {
             mixin fieldSetter!myField;
         }
     }

Compiler error message, DMD64 v2.068.2, line 6 is "whatField = 
newVal;":

     (6): Error: no identifier for declarator whatField
     (6): Error: declaration expected, not '='

I believe I'm following as closely as appropriate what's 
described at
http://dlang.org/template-mixin.html under "Mixins can 
parameterize symbols
using alias parameters".

Why does it error out on whatField, apparently deeming it to be a 
type?

Can I get this done with mixin templates? (I'd like to avoid 
string mixins,
the workaround with them got a little ugly.)

-- Simon


More information about the Digitalmars-d-learn mailing list