Xcode4.6から次のコードスニペットを実行すると、コンパイルされて正常に実行されます。しかし、コマンドラインツール(clang ++)を使用してコンパイルしようとすると、失敗します。
#include <iostream>
#include <memory>
int main(int argc, const char * argv[])
{
std::unique_ptr<int> foo(new int(0));
// insert code here...
std::cout << "Hello, this is cool giri World!\n";
return 0;
}
コンパイルログは次のとおりです。
$ clang --version Apple LLVMバージョン4.2(clang-425.0.24)(LLVM 3.2svnに基づく) ターゲット:x86_64-apple-darwin12.2.0 スレッドモデル:posix $ clang ++ main.cpp -stdlib = libc ++ -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/c++/4.2.1/ -I /usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/include/ main.cpp:7:10:エラー:名前空間「std」に「unique_ptr」という名前のメンバーがありません std :: unique_ptr foo(new int(0)); ~~~~~ ^ main.cpp:7:24:エラー:関数スタイルのキャストまたは型の構築には'('が必要です std :: unique_ptr foo(new int(0)); ~~~ ^ main.cpp:7:26:エラー:宣言されていない識別子'foo'の使用 std :: unique_ptr foo(new int(0)); ^ 3つのエラーが生成されました。