关于C#:我缺少哪些内容?


What include am I missing?

我正在尝试编译以下程序:

1
2
3
4
5
6
7
#include<functional>
#include<iostream>

int main(int argc, char* argv[], char* env[]) {
  std::function<int(int, int)> f = [i, &j] { return i + j; };
  std::cout << f(5, 5);
}

为什么会出现以下错误:

1
a.cc:17:3: error: \\u2018function\\u2019 is not a member of \\u2018std\\u2019

即使我将其替换为" auto",编译器也会抱怨" f"没有命名类型。我尝试使用GCC 4.4.3和4.6.2。


1
std::function<int(int, int)> f = [i, &j] { return i + j; };

语法错误。

您实际要写的是:

1
std::function<int(int, int)> f =[](int i, int j) { return i + j; };

或者如果您想使用auto,则:

1
auto f =[](int i, int j) { return i + j; };

在gcc-4.6.2中使用-std=c++0x选项来编译此代码。


用于功能对象的多态package是C 11中的新增功能。要在支持C 0x(C 11的草稿版本)的4.7之前的GCC安装中使用这些功能,需要使用-std=c++0x开关进行编译(请参见)。在这里)。

对于GCC v4.7,已切换为-std=c++11(请参见此处)。