나는 간단한 코드 그 소리와clang 3.2가 std :: atomic에서 실패합니다 - libC++ 문제입니까?
#include <atomic>
int bar = 0;
void foo(std::atomic<int>&flag)
{ bar = flag; }
를 컴파일하려고 ++ 3.2 (llvm.org에서 LLVM 3.2로 다운로드, 맥은 10.8.3을 os.x에서이 오류와 함께 실패
/> clang++ -std=c++11 -stdlib=libc++ -O3 -march=native -c test.cc
In file included from test.cc:1:
/usr/include/c++/v1/atomic:576:17: error: first argument to atomic operation must be a pointer to non-const _Atomic type ('const _Atomic(int) *' invalid)
{return __c11_atomic_load(&__a_, __m);} ^ ~~~~~
/usr/include/c++/v1/atomic:580:53: note: in instantiation of member function 'std::_1::_atomic_base::load' requested here
operator _Tp() const _NOEXCEPT {return load();} ^
test.cc:5:9: note: in instantiation of member function 'std::_1::_atomic_base::operator int' requested here
bar = done;
때 libC++는 두 경우 모두/usr/lib/C++/v1에 있습니다.
나는 무엇이 누락 되었는가? (나는 OS/X에서 제공되는/usr/bin/clang ++을 사용한다. 거기에 또 다른 libC++는 llvm 3.2와 함께 제공되지만, 나는 실종 되었는가? (나는 아무 것도 찾을 수 없다. clang3.2 트리에서).
오히려 라이브러리 문제 (가짜'const')처럼 보입니다. 그리고 libC++는 LLVM 우산에 포함되어 있으므로 올바른 라이브러리를 사용해야합니다. –
@MatthieuM. 나는 이해하지 못한다./usr/include/C++/v1의 libC++에는 llvm3.2 다운로드가 없었지만 OS는 포함되었습니다. 그러나 xcode는 자체 버전을 가지고있는 것으로 보입니다 (답변 참조). 그래서 "우산"이란 무엇을 의미합니까? – Walter
LLVM은 (상대적으로) 명확한 목표를 가진 오픈 소스 프로젝트입니다. LLVM 우산은 LLVM과 관련된 프로젝트를 말합니다. 대부분이 프로젝트는 LLVM SVN 서버에서 호스팅됩니다. Clang, libC++ 및 lldb는 LLVM에 의해 호스팅되는 것으로 간주 할 수 있습니다. 즉, 새로운 LLVM을 사용하고 libC++가 아닌 다른 libC++가 시스템의 어딘가에 놓여있는 것입니다. –