のは、次のコードを考えてみましょう:のstd ::バインドと右辺値参照
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;
}
です。 f()を呼び出してみてください。 – Gilgamesz
この例がうまくいかないことは、どのようにしてわかりましたか?コンパイラで正常にコンパイルしました。どのようなコンパイラを使用しますか? – zaratustra
http://ideone.com/tl8tc3 – Gilgamesz