Явное указание базового класса в С++

у меня есть следующий код:

template<typename T>
class StackImpl
{
    ...
protected:
    T*     m_data;
    size_t m_size;
    size_t m_used;
};

template<typename T>
class Stack : public details::StackImpl<T>
{
    using super = details::StackImpl<T>;
public:
    Stack(size_t size = 0u);
    Stack(const Stack& other);
    ...
};

И дальше при реализации методов класса Stack возникает проблема:

template<typename T>
Stack<T>::Stack(const Stack& other)
    : details::StackImpl<T>(other.m_used)
{
    while (super::m_used < other.m_used)
    {
        construct(super::m_data + super::m_used, other.m_data[super::m_used]);
        ++super::m_used;
    }
}

С использованием super все работает прекрасно, но стоит только убрать явное указание базового класса, как сразу же получаю следующие ошибки, например:

Use of undeclared identifier 'm_used'

С чем связана данная проблема? Использую Xcode 11.1


Ответы (0 шт):