私はC++パーサ(実際はそれの小さなサブセット)を作成していますが、変数の初期化でカンマ演算子が使用できない理由を説明できません。宣言内のコンマ演算子
int a = 1, 2; // throws a "Expected ';' at the end of declaration" compiler error
a = 1, 2; // assigns the result of the comma binary operator to the a (2)
int a = (1, 2); // does the same as above, because paren expression is allowed as an initializer
C++仕様では、変数宣言で式を初期化子として使用できます。コンマバイナリ表現は許可されませんが、優先度の高い他のすべての式は許可されるのはなぜですか? cppreference.com(http://en.cppreference.com/w/cpp/language/initialization)は、任意の式を初期化子として使用できると述べています。
C++仕様の第8.5節では、初期化子に代入式しか含めることができないと述べています。これは、割り当てが初期化で許容される最低優先順位式であることを規制する場所ですか?
あなたはコンパイラの作家が嫌い?これは、 'int i = 1,2、j = 3;'を解析するときにどこに残されますか? – StoryTeller
"これは、割り当てが初期化で許容される最低優先順位式であることを規制する場所ですか?"はい。 –
@ n.m。カンマ式が許可されていない理由は何ですか? –