clang 3.2在std :: atomic上失败了 - 一个libc ++问题?

时间:2013-04-25 13:00:09

标签: c++ c++11 clang atomic libc++

我尝试编译简单代码

#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上,此操作失败并显示错误

  

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

     

test.cc:1中包含的文件:

     

/ usr / include / c ++ / v1 / atomic:576:17:错误:原子操作的第一个参数必须是指向非const _Atomic类型的指针(&#39; const _Atomic(int)*&#39;无效)

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

/ usr / include / c ++ / v1 / atomic:580:53:注意:在成员函数的实例化中   &#39;的std :: _ 1 :: _atomic_base ::负载&#39;请求

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

test.cc:5:9:注意:在成员函数的实例化中,#std :: _ 1 :: _atomic_base :: operator int&#39;请求

bar = done;

当我使用/ usr / bin / clang ++(它附带OS或Xcode)时,它编译得很好。在两种情况下,libc ++都是/ usr / lib / c ++ / v1。

我错过了什么?是否有另外的libc ++与llvm 3.2一起提供,但我还缺少哪些? (我在clang3.2树中找不到任何东西)。

1 个答案:

答案 0 :(得分:1)

Xcode现在将libc ++捆绑在Xcode.app目录中。您可以通过按住Control键并单击Xco​​de.app来检查此目录,然后选择“显示包内容”。