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:

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

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

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.