2007-11-22から1日間の記事一覧

演算子の中置記法と引数の評価順序

C++ では引数の評価順序が不定なわけだが、ここまでは、まあ、知っていた。だが、これには思い至らなかった: 中置記法 std::cout << "result of f(): " << f() << std::endl << "result of g(): " << g() << std::endl; 前置記法 operator << ( operator << …

C++ では、引数の評価順序は不定

あろうことか、C++ では、関数呼び出しの際の引数を評価する順序が不定である*1。“f(g(), h()) で g よりも h が先に呼び出されるかもしれない”なんて思いもしなかった、ではダメなのだ((g や h の呼び出しが f の呼び出しの前に完了していることは保証して…