クラス定義:template宣言クラスメソッド定義構文
template<class K, class V,
unsigned hashFunc(const K&),
int compFunc(const K&,const K&)=&_compFunc<K> > class X {};
私はクラスのコードブロックの外でクラスメソッドを定義したいです。以下のようなので:コンパイラは不平を言っているのはなぜ
template<class K, class V,
unsigned hashFunc(const K&),
int compFunc(const K&,const K&)=&_compFunc<K> >
X<K, V, hashFunc, compFunc>::X() { }
グラム++ v.4.4.3は
を返し、私はそれがどのように動作するかを作ることができますか? ジョンDiblingで指摘したようにerror: default argument for template parameter for class enclosing ‘X::X()’
template<class K, class V,
unsigned hashFunc(const K&),
int compFunc(const K&,const K&)>
X<K, V, hashFunc, compFunc>::X() { /* ... */ }
は、クラスXは明らかにもコンストラクタを宣言しなければなりませんが、私は、コードをわかりやすくするために削除されたと仮定: