Вот простой шаблон;
template <class T>
class tt {
private:
T x;
public:
tt() {x=0;};
Add(T p) {x += p;};
};
... а затем его подкласс;
class cc : public tt<int> {
public:
cc() : tt() {};
};
Это нормально компилируется в VC, но не в C++ Builder (XE), где выдает ошибку E2102. Компилятору C++ Builder требуется следующий синтаксис конструктора класса cc для компиляции;
cc() : tt<int>() {};
Фактически, компилятору C++ Builder необходимо, чтобы параметры шаблона повторялись каждый раз, когда шаблон tt упоминается в классе cc.
Указывает ли стандартная спецификация C++ необходимость постоянного повторения параметров шаблона или компилятор C++ Builder ошибается?
tt
— это шаблон.tt<int>
— это тип. Вы можете наследовать только от типов. - person Kerrek SB   schedule 01.11.2011tt
не относится к введенному имени класса изtt<int>
? - person avakar   schedule 01.11.2011template <typename T> class Foo;
, тоFoo
относится к текущему экземпляру. Хотя я не уверен на 100%. Подождем авторитетного ответа :-) - person Kerrek SB   schedule 01.11.2011