On Wednesday, 28 October 2020 at 05:51:14 UTC, Nicholas Wilson wrote:
class A(T,int,args...) {}
alias C = A!(int, 0, float);

I need `ScopeClass!C` to be

template ScopeClass(C)
{
    class Anon(T,int,args...) // name doesn't matter
    {
         // implement members with compile time reflection
    }

    alias ScopeClass = Anon!(int, 0, float);
}

So I'm not sure you can do what you want to do - D doesn't have any way to reflect on template parameters (though you CAN extract arguments I don't think it really helps here since you can't tell if the arguments were from `int, float` or from `T...` for example).

But like I don't really get why you need this. Can't you just use the arguments C already has and not have the extra layer? So you'd treat templated C the same was as non-templated C, and then if you want the mangle, just use like C.mangleof instead of trying to reconstruct it.

What's the bigger picture here?

Reply via email to