accessing definitions from sub class in templated class

Viewed 43

I have trouble to build a class which itself contains a subclass which self derives from class which needs template parameters from the top class. Sound horrible and it is indeed deep inside some MTP construction. But have a look on a simple example which I could shrink from the real code.

I leave the names as is in my original source. They are not important here.

template <typename ... T>
class ConstructAll: public T...
{
    public:
        using ConstructorParms = int;
        using BASES_T = ConstructAll<T...>;
        ConstructAll(int){}
};

template <typename T>
class WithTemplate
{
};

class WithoutTemplate
{
};


template <typename X>
class CircuitFromNetlist
{
    private:
        class SerialReader: public ConstructAll<
                            WithTemplate<X>    // use this-> don't compile
                            //WithoutTemplate  // but this works
                            >
    {
        public:
            SerialReader( typename BASES_T::ConstructorParms p): BASES_T( p ) {}
    };

    public:
        CircuitFromNetlist()
        {
            SerialReader ser{1};
        }
};

int main()
{
    CircuitFromNetlist<int> c;
}

If I use WithTemplate<X>it did not compile and runs into:

main.cpp:31:40: error: 'BASES_T' has not been declared SerialReader( typename BASES_T::ConstructorParms p): BASES_T( p ) {} ^~~~~~~ main.cpp: In constructor 'CircuitFromNetlist::SerialReader::SerialReader(int)': main.cpp:31:70: error: class 'CircuitFromNetlist::SerialReader' does not have any field named 'BASES_T' SerialReader( typename BASES_T::ConstructorParms p): BASES_T( p ) {}

If I flip the code to use non templated class it seems to work.

Some idea to get the thing working?

1 Answers
Related