是否有补丁(官方或非官方)让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
(我无处知道你实际上需要它),但我不要以为我能说服所有人。我只是想让所有那些假的错误消失,这样我才能找到真正的错误,而不会浪费数千个假阳性。
答案 0 :(得分:3)
给定帮助模板别名
template <typename T> using id = T;
您可以通过将id<decltype(list)>::value_type
写入原本写成decltype(list)::value_type
的位置来避免智能感知错误,同时仍保持代码完全有效。
根据decltype
紧跟::
的频率,您可能希望创建一个简单的宏:
#define DECLTYPE(x) id<decltype(x)>