3

簡単なコードをコンパイルしてみます

#include <atomic>
int bar = 0;
void foo(std::atomic<int>&flag)
{ bar = flag; }

clang++ 3.2 (llvm.org から llvm 3.2 としてダウンロード; mac os.x 10.8.3 では、これはエラーで失敗します

/> clang++ -std=c++11 -stdlib=libc++ -O3 -march=native -c test.cc

test.cc:1 からインクルードされたファイル:

/usr/include/c++/v1/atomic:576:17: エラー: アトミック操作の最初の引数は、非 const _Atomic 型へのポインターでなければなりません ('const _Atomic(int) *' 無効)

{return __c11_atomic_load(&__a_, __m);}
        ^                 ~~~~~

/usr/include/c++/v1/atomic:580:53: 注: メンバー関数のインスタンス化で 'std::_ 1:: _atomic_base::load' がここで要求されました

operator _Tp() const _NOEXCEPT          {return load();}
                                                ^

test.cc:5:9: 注: メンバー関数のインスタンス化で 'std::_ 1:: _atomic_base::operator int' がここで要求されました

bar = done;

代わりに /usr/bin/clang++ (OS または Xcode に付属) を使用すると、問題なくコンパイルされます。どちらの場合も libc++ は /usr/lib/c++/v1 にあります。

私は何が欠けていますか?llvm 3.2 に付属している別の libc++ はありますが、それはありませんか? (clang3.2 ツリーには何も見つかりません)。

4

1 に答える 1

1

Xcode は、Xcode.app ディレクトリ内に libc++ をバンドルするようになりました。Xcode.app をコントロールクリックし、[パッケージの内容を表示] を選択すると、このディレクトリを調べることができます。

于 2013-04-25T15:11:28.177 に答える