unique_ptr编译错误

时间:2012-03-19 07:43:33

标签: c++ linux gcc stl unique-ptr

如果我告诉你我无法编译,我想这很尴尬。你能帮帮我吗?

#include<memory>
using namespace std;

int  main()
{
    std::unique_ptr<int> p1(new int(5));
    return 0;
}
$ gcc main.cpp 
main.cpp: In function ‘int main()’:
main.cpp:6:2: error: ‘unique_ptr’ was not declared in this scope
main.cpp:6:13: error: expected primary-expression before ‘int’
main.cpp:6:13: error: expected ‘;’ before ‘int’

$ gcc --version
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

2 个答案:

答案 0 :(得分:32)

这只是猜测。

你最有可能像这样(或类似地)编译你的程序:

g++ main.cpp

如果你这样做,那么问题是g ++默认使用c ++ 03。要使用c ++ 11功能(和std::unique_ptr),您需要使用更新版本的c ++:

g++ -std=c++11

g++ -std=c++14

我建议也使用-Wall -Wextra -pedantic

答案 1 :(得分:4)

如果您使用的是 Code :: Blocks ,请转到设置&gt;编译器&gt;全局编译器设置&gt;编译器设置并寻找让g ++遵循C ++ 11 ISO C ++语言标准[-std=c++11] 并检查它!

Code :: Blocks 会在编译时为您添加-std=c++11