Это не только громоздко, но и предотвращает вывод параметров шаблона:
std::vector<int> a;
someFunction(a); // error, cannot deduce 'TT'
someFunction<int>(a);
Альтернатива (в C ++ 11) - псевдонимы шаблона:
template<typename T>
using sometype = std::vector<T>;
template<typename T>
void someFunction(sometype<T> &myArg );
std::vector<int> a;
someFunction(a);
Вы также можетеиспользуйте макрос, за исключением того, что макросы никогда не являются правильным ответом.
#define sometype(T) std::vector<T>
template<typename T>
void someFunction( sometype(T) &myArg);
Кроме того, я считаю, что ваше определение sometype недопустимо до C ++ 11.У него не должно быть такого типа:
template<typename T>
struct type{ typedef std::vector<T> sometype; };
Я думаю, что C ++ 11 меняет правило, чтобы разрешить его, но некоторые компиляторы C ++ 03 не смогли правильно диагностировать проблему.