为什么这不起作用:
#includeint main() { return 0; }
编译为:
clang++ -std=c++11 -stdlib=libstdc++ temp.cpp temp.cpp:1:10: fatal error: 'regex' file not found #include^ 1 error generated. clang++ --version Apple LLVM version 7.0.0 (clang-700.1.76) Target: x86_64-apple-darwin14.5.0 Thread model: posix
如果我能够stdlib
成为libc++
然后再编译.正则表达式c++11
,但clang
本身似乎没有问题-std=c++11 -stdlib=libstdc++
.至少在我的机器上,它看起来像我可以使用的东西/usr/include/regex.h
,但这不是标准的,除了我想使用的正则表达式以外的东西(例如std :: to_string).
这已经想出的原因是因为我想链接到第三方库(对此我没有源),这是符合作为std::string
,而不是std::__1::basic_string
,但我代码使用std::regex
和std::to_string
.我不确定是否要引入对boost的依赖.
Apple发布了一个非常旧版本的libstdc ++和OS X(我认为是4.2.1).该版本并不完全支持C++ 11,因此您需要使用更新的版本std::regex
.