unique_ptr的解除引用运算符在Eclipse中不起作用

bet*_*ido 6 c++ eclipse eclipse-cdt unique-ptr c++11

按照这篇文章中的步骤后,我设法让Eclipse(Indigo)识别unique_ptr(和其他C++ 11新东西).问题是,operator->对于unique_ptr似乎并没有在Eclipse的支持.这里有一个例子:

class Foo { void bar() { /* ... */ } };

std::unique_ptr<Foo> foo;
(*foo).bar(); // 1
foo->bar();   // 2
Run Code Online (Sandbox Code Playgroud)

案例1按预期工作:没有错误和自动完成工作.2但是,对于大小写,Eclipse会在语句中标记错误("方法'栏'无法解析"),加上自动完成foo->功能不起作用.

最有趣的是,我没有任何问题std::shared_ptr.它只发生在std::unique_ptr.

有谁遇到过同样的问题?有谁知道修复它的方法?

编辑:只是为了澄清目的,编译过程适用于上面显示的代码片段.所以,问题不在于编译器本身,而是在Eclipse上.

bet*_*ido 1

我终于在 CDT 中找到了一份错误报告,描述了与我遇到的问题完全相同的问题。到目前为止,还没有真正解决该问题,但该错误报告中解释了一种解决方法:

是的,GCC 4.5是最新的GCC版本,其库头可以通过CDT准确索引。未能索引 4.6 标头的主要原因是 CDT 缺乏对 'constexpr' 和 'nullptr' 的支持,它们在 4.6 标头中广泛使用(顺便问一下,有可能为 Juno 实现吗?)。

我通过在系统上安装 GCC 4.5 和 4.6 并在实际使用 4.6 进行编译时将 CDT 指向 4.5 的标头(通过在发现选项中将编译器调用命令设置为“g++-4.5”)来解决此问题。