これをコンパイルできないと言ったら恥ずかしいことだと思います。私を助けてください:
#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
これは推測です。
おそらくあなたはあなたのプログラムをこのように(または同様に)コンパイルしました:
g++ main.cpp
もしそうなら、問題はg ++がデフォルトとしてc ++ 03を使用することです。 c ++ 11機能を使用するには(およびstd::unique_ptr
)、新しいバージョンのc ++を使用する必要があります:
g++ -std=c++11
または
g++ -std=c++14
と私はまた使用することをお勧めします-Wall -Wextra -pedantic
。
Code :: Blocksを使用している場合は、設定>コンパイラ>グローバルコンパイラ設定>コンパイラ設定に移動し、 g ++がC++ 11 ISO C++言語標準[-std=c++11
]に従って、それを確認してください!
(Code :: Blocksは、コンパイル時に-std=c++11
を追加します)