gpt4 book ai didi

c++ - 为什么 auto i = same_const_variable 无法推断出 "const"?

转载 作者:太空狗 更新时间:2023-10-29 19:52:04 26 4
gpt4 key购买 nike

const int ci = 10;
auto i = ci; // i will be "int" instead of "const int"
i = 20;

我想知道为什么 auto 是为这种行为设计的?

为什么类型 i 是“int”而不是“const int”?

这里有什么问题?

我认为理解为什么会帮助我们记住它

最佳答案

auto 主要遵循与模板参数推导相同的类型推导规则。唯一的区别是 auto 在某些情况下会从 braced-init-list 推导 std::initializer_list,而模板参数推导不会不要这样做。

来自 N3337,§7.1.6.4 [dcl.spec.auto]

6   ... The type deduced for the variable d is then the deduced A determined using the rules of template argument deduction from a function call (14.8.2.1), ...

您观察到的行为与模板参数推导在从函数调用中推导类型时所做的相同

§14.8.2.1 [temp.deduct.call]

2   If P is not a reference type:
    — ...
    — If A is a cv-qualified type, the top level cv-qualifiers of A’s type are ignored for type deduction.

因此,在

auto i = ci;

顶级 const 限定符被忽略,i 被推断为 int

当你写作时

auto& i = ci;

那么 i 不再是引用类型,上述规则不适用,因此保留 const 限定符。

关于c++ - 为什么 auto i = same_const_variable 无法推断出 "const"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32130745/

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