我正在考虑auto
在一些跨平台项目(Windows+Mac)中使用一些 C++11 特性(例如)。在 Windows 上,Visual Studio 支持即将推出的 C++11 标准的一部分,这将允许我简化部分代码库,因此我自然会对开始使用这些功能感兴趣。
但据我所知,当前的 XCode 版本(3.2.4 + GCC 4.2)根本不支持任何 C++11 功能。我可以以某种方式升级 GCC 版本或 CLang 版本吗?还是我应该咬紧牙关等待苹果未来某个时候打包新版本?
Xcode 4.2 终于增加了对 C++0X 的支持:
在项目构建设置屏幕中,打开“全部”选项。
在“构建选项”部分,将编译器设置为“Apple LLVM 编译器 3.0”。
向下滚动到“Apple LLVM Compiler 3.0 - 语言”部分,将“C++ 语言方言”设置为“C++0X”,将“C++ 标准库”设置为“libc++”。
已知 std::move()、移动构造函数和 R-Value 引用按预期工作,我正在测试 std::thread 和 std::atomic。
======= 2012 年更新:=======
从 Clang 开始 - Clang 现在提供了许多 C++11 功能。它包含在 Xcode 中。
======= 2011 年 1 月的原始答案:=======
英特尔的编译器可能是目前最干净的方法。 http://software.intel.com/en-us/articles/intel-composer-xe/
clang 很有希望,但不是特别稳定或具有 wrt c++0x 功能。c++ 对于 clang 来说还是很新的。
gcc:相对成熟,但您必须为 xcode 编写和维护编译器插件。
您还可以指定自定义脚本,但维护起来很痛苦……除非您全力以赴并创建一个适配器工具。
我发现自动、decltype()、基于范围的“for (:)”在跨平台项目(MacOSX、iOS、gcc/linux、MSVC 10/windows 的 LLVM)中工作。
可悲的是,lambda 和可变参数宏似乎无法在 LLVM 下工作。