BenC++ neden varsayılan olarak rönükle referanslar oluşturmuyor?
void doWork(Widget && param) // param is an LVALUE of RRef type
{
Widget store = std::move(param);
}
Neden std::move()
ile rvalue geri param
döküm gerekiyor aşağıdaki işlevi var ki? param
türünün, işlev imzasında rvalue başvurusu olarak bildirildiğinden dolayı rengin olduğu açık değil mi? Hareket yapıcısı, bu prensipte tek başına otomatik olarak çağrılmasın mı?
Neden bu varsayılan olarak gerçekleşmiyor?
void doWork(Widget && param)
{
Widget store1 = param; // automatically move param
Widget store2 = param; // boom
Widget store_last = param; // boom
}
akım tasarımı ile: senin tasarımı ile
Oh, anlıyorum. Mantıklı! Katılıyorum, kopya tasarımı her zaman gizli bir hamle olmaktan daha güvenli! – barney
@barney basit bir örnek, "Oh, anlıyorum. Anladım!" Bir tane sağlayabilirdim sevindim. – bolov
Kimlik, gerçekten bunu yapan bazı gerçek kodları bulmak için gerçekten mücadele ediyor ve dahası, bir derleyici bir hata olarak algılayamadı ve davranamadı. Göreceli ticaret indirimiyle ilgili teklif için herhangi bir tartışma var mıydı, yoksa meydana gelmesi çok daha muhtemel bir durum mu var? –