Lisp では、任意の式を評価できます。C++ では、「式」、「値」、「評価」という概念が採用されています。
「式」、「値」、「評価」の関係がわからない場合は、C++ 標準 5.1 を参照してください。
?: は + 式と同じ式です。
どの式も評価して値を与えることができなければなりません。しかし?:
、表現は必ずしもそうではないようです。
void f1() {}
void f2() {}
void test(bool b)
{
b ? f1() : f2(); // OK. What's the value of this expression?
}
式には値が必要です。b ? f1() : f2();
式です。その価値は何ですか?
説明はありますか?
更新と私自身の答え:
C++ 標準 5.1 からの抜粋:
式は値になり、副作用を引き起こす可能性があります。