On Tuesday, 5 August 2025 at 14:19:16 UTC, IchorDev wrote:
On Thursday, 31 July 2025 at 14:44:21 UTC, monkyyy wrote:
On Thursday, 31 July 2025 at 11:29:41 UTC, IchorDev wrote:
I'd much prefer if the above code worked rather than having to do this:
```d
static foreach(i; 0..a.tupleof.length){
pragma(msg, __traits(getAttributes, a.tupleof[i])); //AliasSeq!(y(10))
}
```

That verbosity is unnecessary to swap to the other foreach: `static foreach(b; a.tupleof){` prints as well

Nope. I need to declare enums in the foreach body.

This?

```d
import std;
struct enumdef{
        string name;
        int value;
}
enum string Name(alias T)=__traits(getAttributes, T)[0].name;
enum int Value(alias T)=__traits(getAttributes, T)[0].value;
struct X{
        @enumdef("foo",3) string x;
        @enumdef("bar",5) string z;
}
void main(){
        static foreach(int I,b; X.init.tupleof){
                mixin("enum "~Name!b~"=Value!b;");
        }       
        static assert(foo==3);
        static assert(bar==5);
}
```

Reply via email to