Подтвердить что ты не робот

Ошибка компиляции 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
4b9b3361

Ответ 1

Это просто предположение.

Скорее всего, вы скомпилировали свою программу следующим образом (или аналогичным образом):

g++ main.cpp

Если вы это сделали, проблема в том, что g++ использует С++ 03 по умолчанию. Чтобы использовать функции С++ 11 (и std::unique_ptr), вам нужно использовать более новую версию С++:

g++ -std=c++11

или

g++ -std=c++14

и я бы рекомендовал использовать также -Wall -Wextra -pedantic.

Ответ 2

Если вы используете Code:: Blocks, перейдите в "Настройки" > "Компилятор" > "Параметры глобального компилятора" > "Параметры компилятора" и найдите "Have g++", следуя стандарту языка С++ 11 ISO С++ [ -std=c++11] и проверьте это!

( Code:: Blocks добавит -std=c++11 для компиляции)