2013-04-28 7 views

答えて

20

評価は1回です。標準は、範囲ベースのforループは、これと同等であることを言う:

§6.5.4範囲ベースステートメント [stmt.ranged]

{ 
    auto && __range = range-init; 
    for (auto __begin = begin-expr, 
     __end = end-expr; 
     __begin != __end; 
     ++__begin) { 
    for-range-declaration = *__begin; 
    statement 
    } 
} 

ためrange-initと等価であるとあなたのケースでは(bar())(括弧で囲んで指定した式)。その表現は、あなたが見ることができるように一度だけ評価されます。

関連する問題

 関連する問題