有人可以向我解释这段代码是一步一步的吗?我在这个主题中找到了它:Segmentation fault on gcc caused by lambda wrapper over variadic template function call我不明白:
template <typename TNode, typename... TNodes>
auto execute(TNode& n, TNodes&... ns)
{
[&](){ n.execute(ns...); }();
}
特别是部分:[&](){ n.execute(ns...); }();
是否与lambda演算和编程语言如caml或ocaml有任何联系?
提前谢谢
答案 0 :(得分:1)
这部分[&](){ n.execute(ns...); }();
创建一个新的lambda并直接执行它。它等于:
auto temp= [&](){ n.execute(ns...); };
temp();
此部分n.execute(ns...);
正在调用名为TNode::execute
的成员函数,该函数接受TNodes...
类型的许多参数(可变参数模板参数)