Подтвердить что ты не робот

Ошибка "X не является шаблоном"

У меня возникли проблемы с объявлением класса шаблона. Я пробовал несколько недоразумных и нечувствительных комбинаций.

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

и

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;
};
4b9b3361

Ответ 1

Это то, что он говорит.

В списке параметров шаблона указано, что M - это class, а не template.

Если вы скажете, что это шаблон класса, то все отлично:

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

Помните, что-то вроде std::vector не является классом, а шаблоном класса. Что-то вроде std::vector<int> - это класс (тип).