C++ standartları örtük taşıma desteğini genişletiyor
Öne çıkanlar
- C++17 standardı ile doğrudan oluşturulan geçici nesnelerin dönüşünde kopyalama atlaması garantileniyor.
- C++20 öncesinde rvalue referansı döndüren fonksiyonlarda kopyalama veya manuel taşıma zorunluluğu bulunuyordu.
- C++23 sürümüyle birlikte rvalue referansı içeren dönüşlerde örtük taşıma desteği standartlaştı.
C++ eğitmeni ve yazarı Andreas Fertig, programlama dilinde açıkça std::move çağrısı yapmadan örtük taşıma işlemlerinden nasıl yararlanılabileceğini açıkladı. Fertig, gereksiz kopyalama maliyetlerini önlemek için öncelikle dönüş değeri optimizasyonunun (RVO) ve kopyalama atlamasının (copy elision) hedeflenmesi gerektiğini belirtti.
C++11 standardından bu yana değer olarak alınan parametrelerin doğrudan döndürülmesinde örtük taşıma uygulanıyor. Ancak rvalue referansı parametrelerinin döndürüldüğü karmaşık senaryolarda C++20 öncesi derleyiciler kopyalama işlemi yapıyor veya manuel taşıma gerektiriyordu. Fertig, C++23 ile birlikte derleyicilerin bu tür rvalue referans dönüşlerinde de otomatik olarak örtük taşıma gerçekleştirdiğini aktardı.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.