On 8/27/26 12:40, Ssenni wrote:
How can I get around this?

```
struct Foo(T) {

   static foreach (m; __traits(derivedMembers, T)) {
     static foreach (i, method; __traits(getOverloads, T, m)) {
       static if (is(typeof(method) Params == __parameters)) {
       }
     }
   }
}
```

Error: declaration `Params` is already defined here.

If I recall, there used to be a trick for static foreach using double braces, but the compiler complains "declaration expected not {".



This is because in D static foreach does not create new scope and all iterations are executed within the same scope, which leads to the error. You need to explicitly add the scope:
```
static foreach(..){
    static foreach (...) {{  // <-- note double curly braces
      ...
    }}                       // <-- note double curly braces
}
```

Reply via email to