en aşağıdaki kod parçasını düşünelim:std :: bağlama ve rvalue referans
class Widget{
};
int main(){
Widget w;
auto lambda = bind([](Widget&& ref){ return; }, std::move(w));
return 0;
}
ve hata tetikler
no match for call to ‘(std::_Bind<main()::<lambda(Widget&&)>(Widget)>)()’
lambda();
Ve benim sorum edilir: Neden hata ortaya çıktı? Her şeyden önce, rvalue referans için açık bir cast yapıyorum - std::move(w)
demek istiyorum ve rvalue referans ile argüman alıyorum - Widget&& ref
demek istiyorum.
N'aber?
Üstelik aşağıda kod işleri, kılan beni daha endişeli:class Widget{
};
int main(){
Widget w;
auto lambda = bind([](Widget& ref){ return; }, std::move(w));
return 0;
}
olduğunu. F(); – Gilgamesz
Bu örneğin işe yaramadığını nasıl anladınız? Derleyicimle başarıyla derledim. Hangi derleyiciyi kullanıyorsunuz? – zaratustra
http://ideone.com/tl8tc3 – Gilgamesz