Given

template ScopeClass(C)
{
    //...
}


where C is a, possibly templated, class I want the eponymous member of ScopeClass!(C) to have the same templatedness (both parameters and arguments)as C.
For a non-template C this is a simple as:

template ScopeClass(C)
{
    class ScopeClass
    {
         // implement members with compile time reflection
    }
}

but for a templated C this is tricker as I can't use a template sequence parameter (...) unless C uses it in the same position (I'm trying to generate a mangle from it so it needs to be exact). Given

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);
}

How do I do this?

Reply via email to