以下引文均来自本书: C ++ Primer 5th ed。“
引用1
auto
通常会忽略顶级竞争。通常在 初始化。 low-level const,例如当一个初始化者 指向const的指针被保留。 ( - pp.69)
引用2
当我们应用
decltype
的表达式是变量时,decltype
返回该变量的类型,包括顶级 const和引用( - pp.70 )。
与decltype
比较,为什么会自动删除类型推导中的顶级常量?,然后我发现:
到目前为止
auto
告诉编译器从初始化器中推断出类型,但是 暗示,使用auto
作为其类型说明符的变量必须具有 初始化程序( - pp.69 )
我的理解是:auto
从初始化程序中推断出类型。 initilizer是rvalue类型,它没有保存在堆栈中,因此它根本没有顶级const。因此,在类型推导期间,auto会自动删除顶级const。
我不知道我的理解是正确还是错误,如果错误请纠正。