2016-11-18 52 views
0

有人可以向我解釋這段代碼是一步一步來的嗎?我發現它在本主題:Segmentation fault on gcc caused by lambda wrapper over variadic template function call,我不明白什麼:關於C++代碼的一些說明(lambda封裝和可變參數模板)

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

特別是部分:[&](){ n.execute(ns...); }();

有沒有像CAML或者Ocaml與演算和programmation語言有聯繫嗎?

預先感謝您

回答

1

這部分[&](){ n.execute(ns...); }();創建一個新的Lambda和直接執行它。它等於:

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

這部分n.execute(ns...);正在呼叫類型的稱爲TNode::execute的成員函數,它接受許多參數(可變參數模板參數)TNodes...