RVO optimizasyon kırmak için hiçbir yolu yoktur Bir const
söz, bu yüzden sorun yok: RVO gerçekleştirilebilir.
Ancak hareket semantikconst
etkilenir. Hareket anlambilimini etkin bir şekilde devre dışı bırakır, yani, bir T(T&&)
yapıcısını veya hareket atama işlecini çağırır. Genel olarak, const
değerini bir dönüş değeri olarak kullanmayın.
Scott Meyers, daha aklı kodlama için orijinal değer olarak const
değerini önerdi. Daha sonra, DDJ için yazdığı Mojo makalesinde, Andrei Alexandrescu, hareket anlamıyla, const
geri dönüş değerleri ile daha iyi yasaklanması gerektiğini ve Scott'ın daha önceki tavsiyesinin göz ardı edildiğini kaydetti.
Şimdi NRVO ve benzeri gibi çeşitli uzman RVO kısaltmaları öğrenmekten asla rahatsız olmadım. Ve bunun başlıca nedeni, bu 'un orjinal olarak anlamını değiştirmesidir, orijinal olarak g ++ derleyicisindeki bazı özel işlevselliklerle bir anlamı vardır. Buradaki terminoloji sadece bir karmaşadır.
Eğer terminolojimin yanlış ve gerçekten başka bir kısaltma kullanmış olsaydım, lütfen düzeltmek için çekinmeyin! :-)
Neden deneme sonuçlarınızı en az bir derleyiciyle eklemiyorsunuz? –
@MarcGlisse: Visual C++ 2008 bunu en iyi duruma getirdi, ancak standardın gerçekten izin verip vermediğinden emin değilim. – Mehrdad