閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

テンプレートパラメータを省略した時の動作

// Macにはまだcpp_to_hatenaが入ってないので色分けが...
cout << std::max(5, 6.5) << endl;
cout << std::max(6.5, 5) << endl;

上記のようなコードをBCCでコンパイルして実行すると、どちらも結果が「6」になります。つまり std::max とみなされているんだと思いますが、これは規定の動作なのでしょうか。

そこに落ちていたC++の設計と進化には特に記述が無かったので未定義なのかも。 gcc4.0.1(OSX)で上記コードをコンパイルしようとしたら関数が見つからないとエラーを吐いたし。

うーん、いまいちよくわかりませんが、関数テンプレートのテンプレートパラメータは省略できるけれど、省略する際は型には気をつけましょうということで。