c++ - Xcode 4.2 和 lambda 表达式 (OSX Lion)

标签 c++ lambda c++11 xcode4.2

我正在尝试让 C++11 特性在我的 Mac 上编译。到目前为止,我已经尝试了两种不同的方法。首先,最新的 Xcode (4.2) 声称支持“C++11 特性”,但是当我尝试编译它时:

#include <iostream>

int main()
{
    using namespace std;
    int n = [] (int x, int y) { return x + y; }(5, 4);
    cout << n << endl;
}

第一个括号 ([) 出现错误“预期表达式”。我猜 lambda 表达式没有包含在新的 C++11 特性中?

然后,作为解决方法,我从 http://hpc.sourceforge.net/ 下载了 gcc 4.6 二进制文件。但是当我使用 gcc-4.6 (/usr/local/bin/gcc-4.6 -std=c++0x test.cpp) 我得到:

Undefined symbols for architecture x86_64:
  "std::cout", referenced from:
      _main in cctnMUFF.o
...

我在想是不是找不到标准库的问题?

谢谢!

最佳答案

XCode 4.2 附带由 Apple 修补的晚期 Clang 2.9。它不支持 lambda 或统一初始化器。 Clang 3.0 也没有,所以您至少要等到 Clang 3.1(从现在起 6 个月后到期)。

或者,您可以使用 Macports 的 GCC 4.6 来支持 lambda。


更新您的更新:您需要链接g++,或手动添加-lstdc++

关于c++ - Xcode 4.2 和 lambda 表达式 (OSX Lion),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082354/

相关文章:

C++ - 如何在 Visual Studio 2010 中创建只读类成员变量

c++ - 与 jenkins 一起工作的最简单的 C++ 测试框架

c# - Func<T> 是如何隐式转换为 Expression<Func<T>> 的?

c++ - 在 constexpr 中使用非常量变量?

c++ - boost 变体 istringstream 和流错误

c# - 编码二维数组

c++ - Chromium 嵌入式 64 位构建

c++ - 丢弃限定符未知原因 (std::bind()/lambda)

java - 将 lambda 分配给功能接口(interface)变量 : inherited abstract method must be implemented. 时出错,为什么?

C++11 : Is it possible to give fixed-template-parameted template to varidic-template-template-parameter?