首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么“自动”声明必须是同一类型的?

为什么“自动”声明必须是同一类型的?
EN

Stack Overflow用户
提问于 2013-05-20 03:48:34
回答 1查看 480关注 0票数 14

似乎不允许使用auto关键字声明不同类型的多个变量。然而,我不知道标准中的措辞如何才能阻止它。

代码语言:javascript
复制
auto i = 1, j = 1.0; //deduction failure (several compilers)

历史上,我理解,因为你只有一个装饰-说明-规格。然而,标准中的规则似乎并不排除,实际上它们鼓励,auto可以是每种规则的不同类型。考虑以下段落:

8-3声明中的每个init声明器被单独分析,就好像它是在一个声明中一样。 7.1.6.4-7如果声明者列表包含多个声明器,则按上文所述确定每个声明变量的类型。..。

即使没有auto,也不是所有变量都需要具有相同的类型,因为某些修饰符(如* )可以单独应用于每个声明器。在我看来,现在的措辞似乎允许每个auto声明器都是一个完全不同的类型。

哪一段会禁止这样做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-20 04:19:00

对列表中的每个对象都执行类型推断,但最终结果必须是单一类型的[dcl.spec.auto]/7 (强调地雷):

如果声明者列表包含多个声明器,则按上文所述确定每个声明变量的类型。如果为模板参数U推导的类型在每个推论中不相同,则程序是不正确的.

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16642294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档