如何让 C++0x / C++11 风格的基于范围的 for 循环与 clang 一起使用?
我一直在使用 gcc w/ -std=c++0x 来利用 C++0x/11 中基于范围的 for 循环,如下所示:
for (int i : container) ...
我最近尝试了 clang (clang+llvm-2.9-x86_64-apple-darwin10) ,但开箱即用的这些语句是编译错误。根据 http://clang.llvm.org/cxx_status.html 它是受支持的。我尝试在命令行上添加 -stdlib=libc++ ,但随后出现错误,提示未找到 iostream 标头。我需要做什么才能让 clang 使用 C++0x/11 功能?
I've been taking advantage of range-based for loops in C++0x/11 using gcc w/ -std=c++0x like so:
for (int i : container) ...
I recently tried clang (clang+llvm-2.9-x86_64-apple-darwin10), but out-of-the-box these statements were compilation errors. According to http://clang.llvm.org/cxx_status.html it's supported. I tried adding -stdlib=libc++ on the command-line, but then I get an error that the iostream header isn't found. What do I need to do to get clang to work with C++0x/11 functionality?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这里的秘密是 LLVM 2.9 不支持基于范围的 for 循环。该文档对应于 LLVM/Clang 主线。要获得基于范围的 for 循环,请查看主线 SVN 中的 LLVM/Clang:http://clang.llvm.org/get_started。 html
libc++ 对于 C++'0x ('11!) 库支持很有用,但如果您想在 C++'0x 语言功能之上使用其功能,则还必须对其进行设置。有关如何设置的信息,请参阅:http://libcxx.llvm.org/
The secret here is that LLVM 2.9 doesn't support range-based for loops. That document corresponds to LLVM/Clang mainline. To get range-based for loops, please check out LLVM/Clang from mainline SVN: http://clang.llvm.org/get_started.html
libc++ is useful for C++'0x ('11!) library support, but you also have to set it up if you want to use its functionality on top of C++'0x language features. For information on how to set it up, please see: http://libcxx.llvm.org/