C++11标准中关于auto与decltype的具体区别?
另附:支持C++11新标准的编译器有哪些?
C++11标准中关于auto与decltype的具体区别?
auto
通过变量的初始值来推断变量的类型
decltype
用于从表达式的类型推断出要定义的变量的类型
std::string func() {
return "hello";
}
int main() {
decltype(func()) s;
s = "hh";
}
注意:decltype()括号中的表达式并不去执行
当然也可以
int i = 5;
decltype(i) a = 9;
另外,decltype((variable))
的结果永远是引用;decltype(variable)
结果只有当variable
本身是一个引用是才是引用
支持C++11新标准的编译器有哪些?
目前支持全部c++11特性的编译器还没有,但是大部分编译器已经对c++11的支持基本足够了,每个新版本都会对c++11特性进行新的支持,所以编译器用最新的基本不会有问题了
具体的支持情况见下面的链接主流编译器支持情况