C++中auto关键字如何推导类型

How does the auto keyword deduct the type in C++

我想知道 auto 关键字如何确定 c++ 中变量的类型。我认为静态类型语言无法做到这一点。 例如,这是如何工作的:

#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
    auto a = 5433245244524;
    std::cout << a << std::endl;
}

它的工作方式与模板的表达式return类型推导相同。它发生在编译类型,所以它是一个静态类型。

Literal 5433245244524包含初始化表达式。您可以使用运算符 decltype() 在编译时获取表达式的类型(静态类型)。例如

 decltype(5433245244524) a = 5433245244524;

auto关键字不止于此。这是一个占位符类型。例如。在声明中

 const auto& a = 5433245244524;

此处auto替换没有限定符的类型标识符,形成兼容的引用类型。

关键字 auto 还有许多其他用途,例如函数的尾部 return 类型等。参见 https://en.cppreference.com/w/cpp/language/auto