Нет, это не так просто. Единственными вещами, которые могут быть шаблонами в C ++ 03, являются классы и функции. Хорошая особенность классов в том, что они сами могут содержать typedef
в качестве члена.
template<class A>
struct D {
typedef C<A, int> type;
};
Так что теперь D<A>::type
означает C<A, int>
. Это то, что известно в шаблонном метапрограммировании как мета-функция. И это хорошо, как вы можете сделать это в C ++ 03.
Хотя в C ++ 11 введены шаблоны псевдонимов, для них требуется новый синтаксис псевдонимов с ключевым словом using
. Попытка с typedef
, как и у вас, также недопустима в C ++ 11.