Here is this class:
template<typename T>
class TestClass
{
private:
struct element
{
T data;
element* ptr;
explicit element(T val) : data(val), ptr (nullptr) {}
};
element entity;
public:
T foo(int);
void fee(const TestClass&);
element* faa(T, bool order = true);
explicit TestClass(T p1);
~TestClass() {}
};
while I tried defining the following function outside the class as:
template<typename T>
TestClass<T>::element* TestClass<T>::faa(T val, bool order)
{
//blah blah blah
}
I got the following error: (compiling on this site)
main.cpp:36:1: error: need ‘typename’ before ‘TestClass::element’ because ‘TestClass’ is a dependent scope
36 | TestClass<T>::element* TestClass<T>::faa(T val, bool order)
| ^~~~~~~~~~~~
| typename
I tried searching on stack overflow - got THIS page. But I am still not understanding where is my error. Kindly advice.