C++20之前Lambda表达式只能捕获固定实参,如:
template <typename T>
auto fun(T&& t){
return [t = std::forward<T>(t)] {
};
}
C++20现在可以捕获模版不定长实参了:
template <typename... Args>
auto funs(Args&&... args){
// 传值捕获
return [...args = std::forward<Args>(args)] {
};
}
也可以捕获引用:
template <typename... Args>
auto funs_reference(Args&&... args){
// 引用捕获
return [&...args = std::forward<Args>(args)] {
};
}