哪些IDE和文本编辑器可以推断出在C++ 11中使用auto关键字声明的变量类型

Joh*_*hny 12 c++ ide editor auto c++11

"几乎总是自动"一文中,Herb Sutter列出了使用auto关键字声明变量的几个原因.

他说实际变量类型可以由IDE自动推导出来,并通过将鼠标悬停在变量名称上来显示.

我想知道哪些IDE和文本编辑器(或插件)目前支持"自动"变量类型演绎.

编辑:

来自答案的IDE列表:

  • Visual Studio 201x
  • 日食
  • Qt Creator 2.7.0
  • KDevelop 4.5.1

文字编辑

那么Vim,Emacs,Sublime Text等等 - 有插件支持类型演绎吗?

IIn*_*ble 8

Visual Studio 2010,Visual Studio 2012和Visual Studio 2013支持使用auto关键字声明的变量的类型推导.这适用于IntelliSense工具提示以及自动完成建议.

从Visual Studio 2010开始,C++ IntelliSense支持已完全重写(请参阅重建Intellisense).IntelliSense现在由Edison Design Group(EDG)C++编译器前端驱动.无论EDG能做什么,您都会看到IntelliSense中的反映.

请注意,IntelliSense工具提示将显示auto变量的基础类型.它不会再次处理树并用适当的typedef替换部分.在Visual Studio 2012上,以下代码

std::string str;

std::string::iterator i1 = str.begin();
auto i2 = str.begin();
Run Code Online (Sandbox Code Playgroud)

将迭代器显示为

std::basic_string<char,std::char_traits<char>,std::allocator<char> >::iterator i1
Run Code Online (Sandbox Code Playgroud)

std::_String_iterator<std::_String_val<std::_String_base_types<char,std::allocator<char> >::_Val_types>::_Myt> i2
Run Code Online (Sandbox Code Playgroud)

鉴于我很高兴不同意Herb Sutter的评估,即IDE足以在您需要时推断出类型.auto在稳健性,正确性和灵活性方面非常出色,但肯定无法满足开发人员在大型代码库上工作的需求.