据我了解, decltype
和 auto
都将尝试找出某物的类型。
如果我们定义:
int foo () {
return 34;
}
那么这两个声明都是合法的:
auto x = foo();
cout << x << endl;
decltype(foo()) y = 13;
cout << y << endl;
您能否告诉我 decltype
和 auto
之间的主要区别是什么?
原文由 James Leonard 发布,翻译遵循 CC BY-SA 4.0 许可协议
decltype
给出传递给它的表达式的 声明 类型。auto
和模板类型推导一样。因此,例如,如果您有一个返回引用的函数,那么auto
仍然是一个值(您需要auto&
来获取引用),但是decltype
将完全是返回值的类型。另请参阅 David Rodríguez 关于仅
auto
或decltype
之一可能的地方的回答。