Ok so I have this code below and when I execute it I get the following error:
type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::vector’
vector<s> v;
template <class T>
class A {
public:
struct s{T x;};
};
template <class T>
class B: public A<T> {
public:
using A<T>::s;
vector<s> v;
};
Can someone please explain the problem.
The issue is that the compiler doesn't know whether
s
is a type or a value. This is the case where you addtypename
ortemplate
, but neither of those worked when I tested. Using the full type directly in thevector
does work however:(Edit) Kept playing with it because why not, and of course
typename
was needed in the one place I didn't trying it: theusing
line. The following code also works.