我有这样的片段:使用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