digitalmars.D.learn - UDA strange behavior
- Temtaime (8/8) Jun 09 2013 @(3) int a;
- David (9/19) Jun 09 2013 It works like that:
- Temtaime (2/2) Jun 09 2013 Oh, thanks. But then that code doesn't work:
- Temtaime (1/1) Jun 09 2013 Thanks for all, it's unactual anymore.
- Jacob Carlborg (7/14) Jun 09 2013 __traits(getAttributes) returns a tuple. Try using an alias instead,
(3) int a; enum tp = __traits(getAttributes, a); enum b = tp[0]; writeln(b); Compiler doesn't accept enum b = tp[0] and says to me: Error: variable _tp_field_0 cannot be read at compile time Why? And writeln(tp[0]) works as expected.
Jun 09 2013
Am 09.06.2013 11:15, schrieb Temtaime:(3) int a; enum tp = __traits(getAttributes, a); enum b = tp[0]; writeln(b); Compiler doesn't accept enum b = tp[0] and says to me: Error: variable _tp_field_0 cannot be read at compile time Why? And writeln(tp[0]) works as expected.It works like that: http://dpaste.dzfl.pl/809de989 (3) int a; enum tp = [__traits(getAttributes, a)]; enum b = tp[0]; pragma(msg, b); The exact reason why you have to expand the tuple into an array, I don't know, or can't remember ;)
Jun 09 2013
Oh, thanks. But then that code doesn't work: http://dpaste.dzfl.pl/262b966c
Jun 09 2013
On 2013-06-09 11:15, Temtaime wrote:(3) int a; enum tp = __traits(getAttributes, a); enum b = tp[0]; writeln(b); Compiler doesn't accept enum b = tp[0] and says to me: Error: variable _tp_field_0 cannot be read at compile time Why? And writeln(tp[0]) works as expected.__traits(getAttributes) returns a tuple. Try using an alias instead, something like: import std.typetuple alias tp = TypeTuple!(__traits(getAttributes, a)); -- /Jacob Carlborg
Jun 09 2013