C++11标准中关于auto与decltype的具体区别

C++11标准中关于auto与decltype的具体区别?

另附:支持C++11新标准的编译器有哪些?

阅读 5.7k
1 个回答

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特性进行新的支持,所以编译器用最新的基本不会有问题了

具体的支持情况见下面的链接主流编译器支持情况

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进