【发布时间】:2016-04-24 23:31:13
【问题描述】:
让我们考虑以下代码:
class Widget{
};
int main(){
Widget w;
auto lambda = bind([](Widget&& ref){ return; }, std::move(w));
return 0;
}
它会触发错误
no match for call to ‘(std::_Bind<main()::<lambda(Widget&&)>(Widget)>) ()’
lambda();
我的问题是:为什么会出现错误?毕竟,我对右值引用进行了显式转换——我的意思是std::move(w),我通过右值引用进行论证——我的意思是Widget&& ref。
怎么了?
此外,下面的代码有效,让我更担心的是:
class Widget{
};
int main(){
Widget w;
auto lambda = bind([](Widget& ref){ return; }, std::move(w));
return 0;
}
【问题讨论】:
标签: c++ c++11 rvalue-reference