Должен ли оператор запятой быть левоассоциативным?

Согласно этой таблице приоритетов оператор запятой является левоассоциативным. То есть, a, b, c анализируется как (a, b), c, Это необходимость? не было бы a, (b, c) есть точно такое же поведение?

2 ответа

Решение

С перегрузом operator, существует, нет, это не то же самое поведение. a, (b, c) может вызвать различные перегрузки, чем (a, b), c,

Оператор запятой имеет ассоциативность слева направо. Два выражения, разделенные запятой, оцениваются слева направо. Левый операнд всегда оценивается, и все побочные эффекты завершаются до того, как правый операнд будет оценен.

Запятые могут использоваться в качестве разделителей в некоторых контекстах, таких как списки аргументов функции. Не путайте использование запятой в качестве разделителя с ее использованием в качестве оператора; два использования совершенно разные.

http://msdn.microsoft.com/en-us/library/zs06xbxh.aspx

Другие вопросы по тегам