以下は単純なテンプレートです。
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 では正常にコンパイルされますが、E2102 エラーが発生する C++ Builder (XE) ではコンパイルされません。C++ Builder コンパイラは、コンパイルする cc クラスのコンストラクタで次の構文を必要とします。
cc() : tt<int>() {};
実際、C++ Builder コンパイラは、tt テンプレートが cc クラス内で言及されるたびに繰り返されるテンプレート パラメーターを必要とします。
標準の C++ 仕様では、テンプレート パラメーターを常に繰り返す必要があると指定されていますか? それとも、C++ Builder コンパイラが間違っていますか?