首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS2013智能感知不理解解密类型

VS2013智能感知不理解解密类型
EN

Stack Overflow用户
提问于 2016-03-15 15:10:14
回答 1查看 352关注 0票数 3

有没有一个补丁(官方的或非官方的)让IntelliSense停止将decltype的每一次使用都作为语法错误报告?它编译得很好,所以我知道decltype是受支持的,但是看到到处都是红色的乱七八糟的东西很让人分心,使得在代码中发现实际的错误变得更加困难。每个编译都给出了数百个非错误的列表--基本上在代码库中每次使用decltype时至少有3个错误,例如:

代码语言:javascript
复制
std::for_each(std::begin(list), std::end(list), [](const decltype(list)::value_type& item)
{
    <do stuff with item>
});

将产生以下(非)错误:

代码语言:javascript
复制
IntelliSense: global-scope qualifier (leading '::') is not allowed
IntelliSense: expected a ')'
IntelliSense: identifier "item" is undefined

现在升级到VS2015并不是一种选择。(我怀疑我是否能说服该公司为每台电脑进行升级,而只升级其中的一部分会导致向后兼容性问题。)

就我个人而言,在我们得到一个完全支持decltype的IDE之前,我宁愿不使用它(我不知道你真的需要它),但我也不认为我能说服所有人。我只想让所有的假错误消失,这样我就可以找到真实的错误,而不去关注成千上万的假阳性。

EN

回答 1

Stack Overflow用户

发布于 2016-03-15 16:01:20

给定帮助模板别名

代码语言:javascript
复制
template <typename T> using id = T;

您可以通过编写id<decltype(list)>::value_type来避免Intellisense错误,同时仍然将代码保持在完全有效的位置,否则就会编写decltype(list)::value_type

根据decltype后面紧跟::的频率,您可能希望创建一个宏,如下所示:

代码语言:javascript
复制
#define DECLTYPE(x) id<decltype(x)>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36015083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档