Явное указание базового класса в С++
у меня есть следующий код:
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