Ral*_*zky 10 c++ decltype auto c++11
我了解到以这种方式使用auto声明变量
auto var = expr;
Run Code Online (Sandbox Code Playgroud)
基本上就是从它的类型expr和剥离&/ && - 引用和所有顶级constness和volatile.这是否意味着上述行完全等同于以下内容?
std::remove_cv<std::remove_ref<decltype(expr)>::type>::type var = expr;
Run Code Online (Sandbox Code Playgroud)
R. *_*des 10
不,那不是真的.auto var = expr;更像是路过expr价值.
int x[1];
auto y = x;
Run Code Online (Sandbox Code Playgroud)
这样做y了int*.
大多数情况下auto x = expr;表现为模板类型推导:
template <typename T>
void f(T);
int x[1];
f(x); // deduces T as int*
Run Code Online (Sandbox Code Playgroud)
它更像是std::decay<decltype(expr)> var = expr;.