有没有一个补丁(官方的或非官方的)让IntelliSense停止将decltype的每一次使用都作为语法错误报告?它编译得很好,所以我知道decltype是受支持的,但是看到到处都是红色的乱七八糟的东西很让人分心,使得在代码中发现实际的错误变得更加困难。每个编译都给出了数百个非错误的列表--基本上在代码库中每次使用decltype时至少有3个错误,例如:
std::for_each(std::begin(list), std::end(list), [](const decltype(list)::value_type& item)
{
<do stuff with item>
});将产生以下(非)错误:
IntelliSense: global-scope qualifier (leading '::') is not allowed
IntelliSense: expected a ')'
IntelliSense: identifier "item" is undefined现在升级到VS2015并不是一种选择。(我怀疑我是否能说服该公司为每台电脑进行升级,而只升级其中的一部分会导致向后兼容性问题。)
就我个人而言,在我们得到一个完全支持decltype的IDE之前,我宁愿不使用它(我不知道你真的需要它),但我也不认为我能说服所有人。我只想让所有的假错误消失,这样我就可以找到真实的错误,而不去关注成千上万的假阳性。
发布于 2016-03-15 16:01:20
给定帮助模板别名
template <typename T> using id = T;您可以通过编写id<decltype(list)>::value_type来避免Intellisense错误,同时仍然将代码保持在完全有效的位置,否则就会编写decltype(list)::value_type。
根据decltype后面紧跟::的频率,您可能希望创建一个宏,如下所示:
#define DECLTYPE(x) id<decltype(x)>https://stackoverflow.com/questions/36015083
复制相似问题