似乎不允许使用auto关键字声明不同类型的多个变量。然而,我不知道标准中的措辞如何才能阻止它。
auto i = 1, j = 1.0; //deduction failure (several compilers)历史上,我理解,因为你只有一个装饰-说明-规格。然而,标准中的规则似乎并不排除,实际上它们鼓励,auto可以是每种规则的不同类型。考虑以下段落:
8-3声明中的每个init声明器被单独分析,就好像它是在一个声明中一样。 7.1.6.4-7如果声明者列表包含多个声明器,则按上文所述确定每个声明变量的类型。..。
即使没有auto,也不是所有变量都需要具有相同的类型,因为某些修饰符(如* )可以单独应用于每个声明器。在我看来,现在的措辞似乎允许每个auto声明器都是一个完全不同的类型。
哪一段会禁止这样做?
发布于 2013-05-20 04:19:00
对列表中的每个对象都执行类型推断,但最终结果必须是单一类型的[dcl.spec.auto]/7 (强调地雷):
如果声明者列表包含多个声明器,则按上文所述确定每个声明变量的类型。如果为模板参数U推导的类型在每个推论中不相同,则程序是不正确的.。
https://stackoverflow.com/questions/16642294
复制相似问题