2009-11-04

min()とmax()が見直されそうな雰囲気

C++0xでは、min()とmax()は可変引数であるが、以下のように書かなければならない。

int a = max({1,2,3,4,5,6,7,8,9,10}) ;

何故ならば、min()/max()は、initializer_listを使うからである。

こうなった理由というのも、ベンチマークをとったら、initializer_list版の方が、早かったかららしい。

私は、そのベンチマーク結果に疑問を持っていた。Variadic Templateの遅くなる理由が見あたらない。実装の問題では無かろうかと。

どうも、そんな動きがあるようだ。詳しくは、またペーパーがでるものと思われる。

1 comment:

萌ゑ said...

これはベンチマークを取るよりもコンパイラが吐いたコードを
比較した方がいいですよね・・・・

コンパイラの実装上の問題に過ぎないと思うのですが・・・