我错过了什么
What include am I missing?
我正在尝试编译以下程序:
#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);
}
为什么我会得到以下错误:
a.cc:17:3: error: u2018functionu2019 is not a member of u2018stdu2019
即使我用"auto"替换它,编译器也会抱怨"f"没有命名类型。我尝试了GCC 4.4.3和4.6.2。
std::function<int(int, int)> f = [i, &j] { return i + j; };
这是错误的语法。
你真正想写的是:
std::function<int(int, int)> f =[](int i, int j) { return i + j; };
或者,如果您想使用auto
,则:
auto f =[](int i, int j) { return i + j; };
将-std=c++0x
选项与gcc-4.6.2一起使用来编译此代码。
-std=c++0x
开关进行编译(请参阅此处)。
对于GCC v4.7,则切换为-std=c++11
(请参见此处)。
相关文章:
- 我的C++合并排序代码不起作用。我在这里错过了什么?
- 我是否为邪恶刽子手的构造函数错过了什么?
- C++:将向量传递给函数,然后在main中调用函数.错过了什么
- 随机访问迭代器:我错过了什么?
- 在这个while循环中我错过了什么?
- 我是否错过了什么,或者虚拟呼叫的性能并不像人们所说的那样糟糕
- 我在变量上收到 3 个 C4703 错误,我认为我已经正确初始化了,但我不确定我错过了什么
- 如果这不是 boost::lockfree::d etail::freelist 中的错误,我在这里错过了什么
- 尝试使用类,但未打印任何内容.不会生成任何错误.我错过了什么吗?
- 尝试实现通过引用传递的向量以与二叉树一起使用,我错过了什么
- 此代码的输出是什么?我在这里错过了什么吗?
- 下面显示的代码片段在 Coliru 和 Ideone 中编译,但根据 iso § 8.5 p6,它不应该,还是我错过了什么?
- AFAIK,下面的代码不应该编译,但它可以在 clang 和 GCC 中编译。我在这里错过了什么?
- 仅在标头中定义时内联的函数.我错过了什么吗?
- 我错过了什么吗?我一直在输出"No file found!"
- 安全布尔成语 - 我是否找到了更简单的方法,还是我错过了什么
- 我错过了什么
- 无法完成Rice(Ruby)的简单示例.我错过了什么
- 为什么包括警卫对我没有影响?我是不是错过了什么
- 据我所知,下面的函数不是constexpr,而是用clang和g++编译的代码.我错过了什么