我试图弄清楚为什么捕获的变量不能通过引用传递给 foo 函数,下面显示的程序没有编译并出现以下错误:
error: invalid initialization of reference of type
'Object&' from expression of type 'const Object'
有什么方法可以将通用引用完美地转发到 lambda 中,以便通过引用捕获它以供以后使用?类型 T 也可能是 R 值或 R 值和 L 值的组合,因此它们不能总是通过引用来捕获。
struct Object
{
};
void foo(Object& a)
{
}
template<typename... T>
auto bar(T&&... values)
{
return [values...](){
foo(values...);
};
}
int main ()
{
Object obj;
auto lambda = bar(obj);
return 0;
}