Tôi đang cố gắng chuyển số lượng đối số biến cho hàm lambda. nguyên mẫu để chấp nhận số biến số của các đối số trong hàm lambda là gì? tôi nên viết một hàm được đặt tên thay vì lambda?Làm thế nào để vượt qua số biến đối số cho hàm lambda
std::once_flag flag;
template<typename ...Args>
void gFunc(Args... args)
{
}
template<typename ...Args>
void func(Args... args)
{
std::call_once(flag,[](/*accept variable number of arguments*/... args)
{
// more code here
gFunc(args...);
},
args...
);
}
chữ ký dưới đây cung cấp cho lỗi:
[&](){ }
[&args](){ }
[&args...](){ }
[&,args...](){ }
[&...args](){ }
Nếu các gói lập luận được mở rộng, làm thế nào chúng ta có thể truy cập vào các gói lập luận một lần nữa? Chữ ký [this] (http://ideone.com/rwbzq9) không hoạt động. – ProgramCpp
@ProgramCpp Nó hoạt động với [clang] (http://coliru.stacked-crooked.com/a/b83cb856787c83a3) và [gcc 4.9] (http://coliru.stacked-crooked.com/a/1a1a6a2da4b2881f) – P0W
Cảm ơn bạn :) Tôi muốn chuyển chỉ args theo giá trị '[args ...]() {gFunc (args ...);};' – ProgramCpp