2016-11-18 5 views
0

Может кто-нибудь объяснить мне, что делает этот фрагмент кода шаг за шагом? Я нашел его в этой теме: Segmentation fault on gcc caused by lambda wrapper over variadic template function call, и я не понимаю ничего:Некоторое объяснение о коде C++ (обертка лямбда и вариационный шаблон)

template <typename TNode, typename... TNodes> 
auto execute(TNode& n, TNodes&... ns) 
    {  
     [&](){ n.execute(ns...); }(); 
    } 

Особенно часть: [&](){ n.execute(ns...); }();

Есть ли связь с лямбда-исчисления и языка programmation как КАМЛ или OCaml?

Спасибо заранее

ответ

1

Эта часть [&](){ n.execute(ns...); }(); создает новый лямбда и выполнить его непосредственно. Она равна:

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

Эта часть n.execute(ns...); вызывает функцию-член с именем TNode::execute, который принимает множество параметров (VARIADIC шаблон аргумент) из типов TNodes...

 Смежные вопросы

  • Нет связанных вопросов^_^