Ответ 1
MSVC прав на деньги в этом. Это связано только с грамматикой:
selection-statement:
if ( init-statement condition )
init-statement:
simple-declaration
simple-declaration:
decl-specifier-seq init-declarator-list;
decl-specifier-seq ref-qualifier [ identifier-list ] initializer ;
Он суммируется выше по всему стандарту (с некоторыми необязательными вещами, удаленными для краткости), но начальная точка находится в [stmt.select]/1.
Суть в том, что simple-declaration
представляет собой либо разделенный запятыми список деклараторов, которые вводят объекты одного типа 1 (decl-specifier-seq init-declarator-list;
) или одно структурированное связывание (вторая, довольно verbose строка под simple-declaration
).
<суб > 1 Не строго один и тот же тип (int x, *y;
), но точка должна быть ясной.
Суб >