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