[英]Which IDEs and text editors can deduce type of variables declared using auto keyword in C++11
在“几乎总是自动”一文中,Herb Sutter列出了使用auto关键字声明变量的几个原因。
他说实际变量类型可以由IDE自动推导出来,并通过将鼠标悬停在变量名称上来显示。
我想知道哪些IDE和文本编辑器(或插件)目前支持“自动”变量类型演绎。
编辑:
来自答案的IDE列表:
文字编辑
那么Vim,Emacs,Sublime Text等等 - 有插件支持类型演绎吗?
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();
将迭代器显示为
std::basic_string<char,std::char_traits<char>,std::allocator<char> >::iterator i1
和
std::_String_iterator<std::_String_val<std::_String_base_types<char,std::allocator<char> >::_Val_types>::_Myt> i2
考虑到我很高兴不同意Herb Sutter的评估,即IDE足以在您需要时推断出类型。 auto
在稳健性,正确性和灵活性方面非常出色,但肯定无法满足开发人员在大型代码库上工作的需求。
注意:这个答案的初稿是通过简单地组合现有答案和Eclipse注释,然后添加关于Vim的注释来创建的。 如果没有这样的“汇总”答案,这个问题(及其现有答案)似乎违反了“一个正确的答案”规则。
这应该真的被格式化为表格; 太糟糕了,我们在这里没有这种能力。
KDevelop 4.5.1还支持类型扣除。 虽然它可能会犯很小的错误。
例子:
auto i = 3; // Deduces int
auto d = 3.0; // Deduces double
auto f = 3.0f; // Deduces double - wrong
从这个测试源代码判断, Qt Creator 2.7.0也可以做到:
class A
{
void f();
};
int main()
{
auto a = A();
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.