Похоже, что не разрешено объявлять несколько переменных различных типов с помощью ключевого слова auto
. Я не могу понять формулировку в стандарте, которая предотвратила бы это.
auto i = 1, j = 1.0; //deduction failure (several compilers)
Исторически я понимаю, поскольку у вас есть только один spec-specifier. Тем не менее, правила в стандарте, похоже, не исключают, на самом деле они поощряют, что auto
может быть отдельным типом для каждого. Рассмотрим следующие параграфы:
8-3 Каждый декларатор init в декларации анализируется отдельно, как если бы он был в декларации сам по себе.
7.1.6.4-7 Если список деклараторов содержит более одного декларатора, определяется тип каждой объявленной переменной как описано выше. [...]
Даже без auto
не все переменные должны иметь один и тот же тип, так как некоторые модификаторы типа *
могут применяться к каждому декларатору индивидуально. Теперь мне кажется, что формулировка позволяет каждому декларатору auto
быть полностью отличным типом.
Какой пункт запретил бы это?