cách chính xác để làm điều này với g ++ là gì:variadic mẫu cho lambda biểu thức
template < typename F >
void g (F f);
template < typename ... A >
void h (A ... a);
template < typename ... A >
void f (A ... a) {
g ([&a]() { h (a...); }); // g++-4.6: error: parameter packs not expanded with »...«
}
Cảm ơn bạn. g ++ - 4.6 không chấp nhận cú pháp này từ bản nháp: test01.cc:2:23: Fehler: expected »,« before »...« token – Thomas
Tôi đã giải quyết nó bằng cách tạo một tuple, chuyển nó đến hàm lambda và giải nén ở đó. – Thomas
Có vẻ như g ++ - 4.8 vẫn không chấp nhận cú pháp này, nhưng ICC 13.0.1 thực hiện: http://bit.ly/14auYGy – SCFrench