c несколько уровней шаблонов

#c #templates

#c #шаблоны

Вопрос:

Я пытаюсь определить два шаблонных типа:

 template <typename T1, typename T2>
class A {};

template <typename T1, typename T2>
using BType = std::vector<typename A<T1, T2>>::iterator;
  

Я получаю сообщение об ошибке недопустимых шаблонов. Интересно, что я здесь сделал не так.

Ответ №1:

Вам нужно переместить положение typename ,

Внутри объявления или определения шаблона typename может использоваться для объявления того, что зависимое квалифицированное имя является типом.

 template <typename T1, typename T2> 
using BType = typename std::vector<A<T1, T2>>::iterator;
//            ^^^^^^^^