もしくは、『限定子としての 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。
最近のコメント