我不明白为什么我无法从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