C++;14 decltype(自动)使CLion突出显示为错误有效语句 我正在用Scott Meyer的有效的现代C++做练习(项目3)。p>
使用以下代码:C++;14 decltype(自动)使CLion突出显示为错误有效语句 我正在用Scott Meyer的有效的现代C++做练习(项目3)。p>,c++,c++14,clion,C++,C++14,Clion,使用以下代码: template<class T> class Container { private: T _arr[4]; public: T &operator[](std::size_t index) { return _arr[index]; } explicit Container(T def) { for(std::size_t i = 0; i < 4; ++i)
template<class T>
class Container
{
private:
T _arr[4];
public:
T &operator[](std::size_t index)
{
return _arr[index];
}
explicit Container(T def)
{
for(std::size_t i = 0; i < 4; ++i)
{
_arr[i] = def;
}
}
};
template<class C>
decltype(auto) print_and_access4(C&& container, std::size_t index)
{
std::cout << "Index = " << index << std::endl;
return container[index];
}
auto& y = print_and_access4(Container<int>(5), 0);
CLion版本:
CLion 2017.3.2
克利永C++解析器目前还不是完全标准的编译程序。因此,有时它在有效代码上显示错误,有时在无效代码上不显示错误。但它会随着版本的不同而变得更好,所以可能很快就会被修复
您可以在他们的追踪器上报告错误:如果您想要一些符合标准的IDE,您可以尝试基于Clang的IDE,如QtCreator或KDevelop。有许多构造CLion将其标记为错误,即使它们不是上次我使用它时的构造…@smoothware:您开始使用不同的IDE了吗?我已经习惯了Jetbrains IDE,所以我选择了它。顺便说一句,y是可用的,作为悬挂引用…@Jarod42:正确,这不是好代码。但是,表达式<代码> PrrtPyand Access 4(容器(5),0)< /COD>实际上是一个LValk。我建议继续留在克利永上:IDE正确地解析C++,但是它们缺少许多重构函数和代码生成器等CHILN特性。
CLion 2017.3.2