SORU
27 Ocak 2011, PERŞEMBE


Varsayılan neden atama move-kurucu/?

Basit bir programcı değilim. Sınıf üyeleri benim değişkenleri genellikle POD-tür oluşur ve kaplar STL. Bu nedenle ben nadiren bu varsayılan olarak uygulanır olarak atama operatörleri yazmak veya kurucular kopyalamak için.

Eğer nesneler üzerinde ** 0 kullanırsam bu Ekle, hareketli, std::move son derece güvenlidir atama-operatör, anlamını kullanır.

Olarak ben basit bir programcı istiyorum yararlanmak için hareket yetenekleri olmadan ekleme bir hareket kurucu/atama operatörü için her sınıf yazıyorum, derleyici olabilir sadece onlara uygulanan "this->member1_ = std::move(other.member1_);..."

Ama (en azından Visual 2010), bunun için özel bir neden mi var?

Daha da önemlisi;bunu aşmanın bir yolu var mı?

Güncelleme: Eğer aşağı GManNickG cevabı bakarsanız bu iş için harika bir makro sağlar. Ve eğer haberin yoksa, sen-anlambilim hareket uygularsanız takas üye işlevi kaldırabilirsiniz.

CEVAP
27 Ocak 2011, PERŞEMBE


Hareket yapıcılar ve atama operatörleri örtülü nesil çekişmeli ve C Standardı son taslak olarak önemli değişiklikler olmuştur, mevcut Derleyiciler büyük olasılıkla farklı örtülü nesil için saygı ile davranır.

Sorun geçmişini, the 2010 WG21 papers list görmek ve aramak için"" . mov

Geçerli belirtimi (N3225, Kasım) Eyalet (8/N3225 12.8):

X açıkça bir hareket bildirmiyor bir sınıf tanımı yapıcı, bir örtük olarak varsayılan olarak eğer ve yalnızca eğer ilan edilecek

  • X kullanıcı bildirilen kopya Kurucu ve . bir yok

  • X kullanıcı bildirilen kopya atama operatör yok

  • X kullanıcı-ilan taşımak atama operatörü yok

  • X kullanıcı-ilan yıkıcı ve . bir yok

  • hareket yapıcı silinmiş gibi örtülü olarak tanımlanmış olmaz.

12.8/22 benzer dil hareket atama örtük olarak varsayılan bildirildi belirtme var. Sen-ebilmek bulmak tam bir listesi değişiklikler için destek geçerli belirtimi örtük taşı üretimi N3203: Tightening the conditions for generating implicit moves , hangi göre büyük ölçüde bir kararları tarafından önerilen Bjarne Stroustrup kağıt N3201: Moving right along.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013
  • gsipek

    gsipek

    20 Temmuz 2007
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011