Get UDAs of self's declaration as a member?

Ali Çehreli acehreli at yahoo.com
Tue Apr 26 01:13:29 UTC 2022


On 4/25/22 14:32, cc wrote:
 > Hard to word this question right, but is it possible to get the UDAs
 > assigned to a class/structure's member variable declaration, within that
 > variable's definition?  e.g.

That sounds backwards to me too. :) Policy-based design can work here:

import std.stdio;
import std.traits;

enum SPECIAL { no, yes }

struct Foo(SPECIAL special = SPECIAL.no)  {
     void foo() {
       static if (special == SPECIAL.yes)
         writeln("special");
       else
         writeln("not special");
     }
}

struct Bar {
   Foo!(SPECIAL.yes) foo;
}

alias FooSpecial = Foo!(SPECIAL.yes);
alias FooRegular = Foo!(SPECIAL.no);

void main() {
   Foo!() foo;        // <-- Without the aliases
   FooSpecial foo_;   // <-- Better syntax with aliases
   foo.foo;
   Bar bar;
   bar.foo.foo;
}

Ali



More information about the Digitalmars-d-learn mailing list