VS2013 Intellisense不了解decltype

时间:2016-03-15 15:10:14

标签: c++ visual-studio-2013 intellisense decltype

是否有补丁(官方或非官方)让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。 (我怀疑我可以说服公司去升级每台计算机,只升级其中一些会导致向后兼容性问题。)

就我个人而言,在我们得到一个完全支持它的IDE之前我根本不想使用decltype(我无处知道你实际上需要它),但我不要以为我能说服所有人。我只是想让所有那些假的错误消失,这样我才能找到真正的错误,而不会浪费数千个假阳性。

1 个答案:

答案 0 :(得分:3)

给定帮助模板别名

template <typename T> using id = T;

您可以通过将id<decltype(list)>::value_type写入原本写成decltype(list)::value_type的位置来避免智能感知错误,同时仍保持代码完全有效。

根据decltype紧跟::的频率,您可能希望创建一个简单的宏:

#define DECLTYPE(x) id<decltype(x)>