2016-11-18 1 views
0

Kann mir jemand erklären, was das Stück Code Schritt für Schritt macht? Ich fand es in diesem Thema: Segmentation fault on gcc caused by lambda wrapper over variadic template function call und ich nichts verstehe nicht:Einige Erläuterungen zum C++ - Code (Lambda-Wrapper und variadisches Template)

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

Besonders der Teil: [&](){ n.execute(ns...); }();

Gibt es eine Verbindung mit Lambda-Kalkül und programmation Sprache wie caml oder ocaml?

Vielen Dank im Voraus

Antwort

1

Dieser Teil [&](){ n.execute(ns...); }(); einen neuen Lambda erzeugt und direkt ausführen. Es ist gleich:

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

Dieser Teil n.execute(ns...); ist eine Memberfunktion namens Aufruf TNode::execute, die viele Parameter (variadische Template-Argument) der Typen TNodes...

akzeptiert
Verwandte Themen