есть 2 вот таких класса: Код (Text): template <int a, class t> class Ca : public t { }; template <int i> class Cb { }; мне нужно создать третий, вот такого типа: Код (Text): template <int i> Ca<i, Cb<i> > Cx; у меня получается только через наследование, т.е. так: Код (Text): template <int i> class Cx : public Ca<i, Cb<i> > { }; Не очень нравится такой способ, т.к. если, например, Ca имеет конструктор с параметрами, то его нужно повторно описывать для класса Cx. через typedef не получается (
В C++03 и не получится. Шаблонный typedef появился только начиная с C++0x. Поддерживает ли его VS2010 - не помню.
Если ещё только через make функцию, у которой будет один шаблонный параметр. По-другому не получится, так как не выводить и не изменять кол-во параметров, ни класс, ни его специализации не могут. typedef не особо на что тут влияет. Ну или вот так корявенько. Код (Text): class dummy {}; template <int a, class t = dummy> class Ca : public t { }; template <int i> class Cb { }; template <int a> class Ca<a, Cb<a> > { }; int main () { Ca<5> a; }
_DEN_ >Шаблонный typedef появился только начиная с C++0x. Поддерживает ли его VS2010 - не помню. Не поддерживает, к сожалению.