Я хотел бы использовать шаблонный typedef в разных местах, среди прочего, в объявлении самой шаблонной функции. Вот моя текущая попытка
template<typename T>
struct type{ typedef std::vector<T> sometype; }
template<typename TT>
void someFunction( type<TT>::sometype& myArg );
(обратите внимание, что std::vector
— это просто пример). Это не работает и выдает ошибку компилятора «объявление шаблона 'void someFunction'». Я уже понял, что нужно поставить typename
перед type
, т.е.
template<typename TT>
void someFunction( typename type<TT>::sometype& myArg );
работает. Но это решение, мягко говоря, немного громоздко. Существуют ли альтернативы?