C++ - Как использовать обходной путь шаблона typedef при объявлении функции?

Я хотел бы использовать шаблонный 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 );

работает. Но это решение, мягко говоря, немного громоздко. Существуют ли альтернативы?

7
задан janitor048 22 March 2012 в 15:25
поделиться