gpt4 book ai didi

c++ - 为什么 'auto' 声明都必须是同一类型?

转载 作者:IT老高 更新时间:2023-10-28 22:39:30 25 4
gpt4 key购买 nike

似乎不允许使用 auto 关键字声明多个不同类型的变量。但是,我无法弄清楚标准中会阻止它的措辞。

auto i = 1, j = 1.0; //deduction failure (several compilers)

从历史上看,我理解,因为您只有一个 decl-specifier-spec。然而,标准中的规则似乎并没有排除,事实上它们鼓励 auto 可以是每个不同的类型。考虑以下段落:

8-3 Each init-declarator in a declaration is analyzed separately as if it was in a declaration by itself.

7.1.6.4-7 If the list of declarators contains more than one declarator, the type of each declared variable is determined as described above. [...]

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

哪一段会禁止这样做?

最佳答案

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

If the list of declarators contains more than one declarator, the type of each declared variable is determined as described above. If the type deduced for the template parameter U is not the same in each deduction, the program is ill-formed.

关于c++ - 为什么 'auto' 声明都必须是同一类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16642294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com