Velvet Star Monitor

Standout celebrity highlights with iconic style.

general

'X is not a template' error

Writer Emily Wong

I'm having trouble declaring a template class. I've tried an number of ill-readable and non-sensical combinations.

template <class C, class M >
class BlockCipherGenerator : public KeyGenerator
{ ... private: M < C > m_cipher;
};

And

template <class C, class M >
class BlockCipherGenerator : public KeyGenerator
{ typedef typename C::value_type CIPHER; typedef typename M::value_type MODE; private: MODE < CIPHER > m_cipher;
};

1 Answer

It's what it says.

Your template parameter list says that M is a class, not a template.

If you say that it's a class template, then everything's fine:

template <class C, template <class C> class M>
class BlockCipherGenerator : public KeyGenerator
{ M<C> m_cipher;
};

Remember, something like std::vector is not a class, but a class template. Something like std::vector<int> is a class (type).

2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.