脳ざらし紀行


2006-05-10

_ [C++] f.template

もしくは、『限定子としての 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。

お名前:
E-mail:
コメント:
本日のリンク元

最近のコメント

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|04|05|
2011|04|
2012|03|07|
2013|01|02|07|
トップ «前の日記(2006-05-06) 最新 次の日記(2006-05-13)» 編集