Well, if that's the lowering, then it's indeed hard. That doesn't mean it shouldn't happen, though... perhaps changing the lowering? I'm no compiles expert, so no idea how).

What I'd like to get is the same that I get using __traits(getMember,...), but repeated n times (AliasSeq perhaps?), like with regular overloads.

Then, whatever I can do with the first entry (the only one I can get currently) should also be possible with the rest. In my case, I'd like to access the UDAs, but I can imagine that the use case that allows us to get a template keeps being valid for all the "hidden" alternatives.

Also, I think that whether to use "getOverloads" or to add a new trait is rather an implementation detail

It's a bit frustrating being able to access only the first of a set...

A.

> Would it be possible at all? I mean, if the two following codes are equivalent
> ´´´
>      @S("Has foo_A") template foo(string s) if (s == "a") {
>          enum foo = "foo_A";
>      }
>      @S("Has foo_B") template foo(string s) if (s == "b") {
>          enum foo = "foo_B";
>      }
> ´´´
>
>
> ´´´
>      template foo(string s)
>      {
>          static if (s == "a")
>          {
>                 @S("Has foo_A") enum foo = "foo_A";
>          }
>          else static if (s == "b")
>          {
>                @S("Has foo_B") enum foo = "foo_B";
>          }
>      }
> ´´´
>
> How would you define a "template overload"?
> And which "overloads" would you like to get if constraints are more general? > And last but not least, the getOverloads is defined on functions, which are callable, whereas templates are not, in general...

Reply via email to