如何解决lambda函数是否需要任何头文件?
我通常在Mac上编写代码,而且对包含标头的使用也不满意(great语在这方面有很多余地)。结果,我常常不知道我使用的提供的功能属于哪个标头。
对于lambda表达式,它们是否需要包含任何标头?我检查了https://en.cppreference.com/w/cpp/language/lambda,但没有看到任何相关信息。
解决方法
他们没有。 Lambda是一种语言功能,而不是库功能。您可以将它们绑定到std::function
上的<functional>
,但是您没有。
尽管不包含任何任何标头,您仍可以轻松验证以下代码compiles as expected:
int main() {
auto f = [](){};
f();
}
,
Lambda是语言的一部分,因此不需要使用标头,就像不需要包含标头来定义普通函数一样。
,代码
int main()
{
auto x = [](int i) {
return i;
};
x(2);
}
将生成类似
的东西int main()
{
struct X {
inline int operator()(int i) const { return i; }
} x;
x(2);
}
因此无需包含任何标题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。