我不明白为什么我无法从std::memory or std::tr1
包含标头中找到 make_shared。
我在我的机器上只看到 1 个版本的 gcc
ls -lh /usr/bin/g++
lrwxrwxrwx 1 root root 7 Sep 22 2012 /usr/bin/g++ -> g++-4.7
我-std=c++11
也在项目构建属性中使用标签
我的环境:ubuntu ecplise juno R2 CDT
#include <memory>
#include <tr1/memory>
int main()
{
std::tr1::shared_ptr<int> t = std::tr1::make_shared<int>(1);
std::shared_ptr<int> t = std::make_shared<int>(1);
}
更新:
Eclipse 控制台窗口中的构建显示它实际上是成功的,但是代码编辑器保持红色下划线 shared_ptr 和 make_shared。我试图重建索引,清除项目。没有什么可以消除错误。有什么建议么?
16:15:09 **** Incremental Build of configuration Debug for project test ****
make all
Building target: test
Invoking: GCC C++ Linker
g++ -o "test " ./main.o
Finished building target: test
16:15:09 Build Finished (took 328ms)
更新 2:
下面的链接解决了我的问题 Enable C++11 in Eclipse CDT (Juno/Kepler/Luna) indexer