もしくは、『限定子としての template』。メンバ関数テンプレートを使う場合、素直に書くとエラーになっちゃうよ、という話。どういうことかというと、
template<class Hoge>
void
func() {
Hoge f;
f.call<double>();
}
というのをgccでコンパイルしたらエラーになる。以下のように書かないといけない。call がメンバ関数テンプレートのつもりで、新たな関数テンプレート func を定義したことを、コンパイラに教えてあげないといけない。
template<class Hoge>
void
func() {
Hoge f;
f.template call<double>();
}
こんなの『プログラミング言語C++第3版』のどこにも書いてねー。とか叫んでみたけど、書いてあるらしい。付録C.13.6。
最近のコメント