关于C ++代码的一些解释(lambda包装器和可变参数模板)

时间:2016-11-18 09:05:50

标签: c++ lambda variadic-templates

有人可以向我解释这段代码是一步一步的吗?我在这个主题中找到了它: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有任何联系?

提前谢谢

1 个答案:

答案 0 :(得分:1)

这部分[&](){ n.execute(ns...); }();创建一个新的lambda并直接执行它。它等于:

auto temp= [&](){ n.execute(ns...); };
temp();

此部分n.execute(ns...);正在调用名为TNode::execute的成员函数,该函数接受TNodes...类型的许多参数(可变参数模板参数)