Является ли запятая в списке переменных точкой последовательности?
В следующем типе кода есть точка последовательности между каждой конструкцией переменных или результат undefined?
int a = 0;
int b = a++, c = a++;
Мне не удалось найти в стандарте конкретную ссылку на точку последовательности здесь. Означает ли это, что это undefined, или просто я потерпел неудачу в своем поиске? Завершение выражения является точкой последовательности, но имеет ли указанная выше инициализация?
Ответы
Ответ 1
Я считаю, что поведение хорошо определено из-за 8 [dcl.decl]/3
Каждый init-declarator в декларации анализируется отдельно, как если бы он был в декларации сам по себе.
Что еще дополнительно поясняется в сноске как
Объявление с несколькими деклараторами обычно эквивалентно соответствующей последовательности объявлений, каждая с одним описатель. Это
T D1, D2, ... Dn;
обычно равнозначен
T D1; T D2; ... T Dn;
Ответ 2
Как вы подозреваете, после каждого выражения инициализатора есть точка последовательности, потому что это полные выражения (1.9/16, 1.9/12).