我有這樣的片段:使用stdlib=libc++
時鏘不承認的std :: shared_ptr的用的libstdC++
main.cpp:4:8: error: no member named 'shared_ptr' in namespace 'std'
std::shared_ptr<int> p(new int);
~~~~~^
它運作良好:
#include <memory>
int main() {
std::shared_ptr<int> p(new int);
}
如果我clang++ -std=c++0x -stdlib=libstdc++ main.cpp
編譯我得到這個錯誤代替。該++的libstdc的版本是6.0.9,編譯器是
$ clang++ --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.3.0
Thread model: posix
我看到了同樣的結果使用clang version 3.5.0 (tags/RELEASE_350/final)
時。
我已經意識到,它的作品,如果我用tr1
,但這似乎不太便攜式對我說:
#include <tr1/memory>
int main() {
std::tr1::shared_ptr<int> p(new int);
}
那麼,是不是有可能使用std::shared_ptr
鏗鏘和libstdC++?
這取決於你的GCC/libstdC++版本。很可能你正在一個發佈GCC舊版本的平臺上。 – 2014-10-19 04:18:34
正如我所猜測的,libstdC++ 6.0.9附帶GCC 4.2.1。您應該考慮更新GCC(即通過自制軟件)。我認爲您必須使用指向您的GCC 4.8安裝的'--with-gcc-toolchain'重新編譯clang。 – 2014-10-19 04:23:39