似乎不允许使用auto
关键字来声明不同类型的多个变量。但是我无法弄清楚标准中可以阻止它的措词。为什么必须'自动'声明都是相同的类型?
auto i = 1, j = 1.0; //deduction failure (several compilers)
历史我理解,因为你只有一次DECL说明符规格。然而,标准中的规则似乎并不排除,实际上他们鼓励,auto
可能是一个不同的类型。考虑这些段落:
8-3在一个声明中的每个初始化声明符单独分析,如果它是在本身的声明。
7.1.6.4-7如果声明符列表包含多个声明符,则每个声明的变量的类型如上所述确定为 。 [...]
即使没有auto
不具有相同的类型,因为某些修饰像*
可以单独应用于每个声明符所需的所有变量。对我来说,现在看来,措辞允许每个auto
声明是一个完全不同的类型。
哪一段会禁止这个?
顺便说一句 - 7.1.6.4/3中的例子用法是'const auto * v =&x,u = 6; // OK:v的类型为const int *,u的类型为const int' - 显然,想法是从第一个变量中删除类型可以用于创建后续的... –