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; }; |
或者如果您想使用
1 | auto f =[](int i, int j) { return i + j; }; |
在gcc-4.6.2中使用
用于功能对象的多态package是C 11中的新增功能。要在支持C 0x(C 11的草稿版本)的4.7之前的GCC安装中使用这些功能,需要使用
对于GCC v4.7,已切换为