SORU
28 Ocak 2013, PAZARTESİ


'bu *rvalue başvurular' özelliği için geçici çözümler

Hareketli bir nesnenin etrafındaki proxy kapsayıcı bir sınıf var, ve proxy örtülü olarak temel nesneye rvalue başvurusu verim için mümkün olmak istiyorum, ama proxy sadece taşınmış kendisi.

N2439 "Extending move semantics to *this" ama gcc bir sürümü henüz mevcut değil ve bir süre daha olmayacak önerisi başına bu davranışı uygulamak mümkün olacak inanıyorum.

Aşağıdaki kod sonuçta hedef ben değil, ama şu anda mümkün değil. Bu özellik benim için geçerli olduğu kadar, herhangi bir eşdeğer geçici çözümler var mı?

template< class T >
struct movable_proxy {
    operator T&&() && {
        return std::move(value);
    }

    operator const T&() const& {
        return value;
    }

private:
    T value;
};

CEVAP
4 Mart 2013, PAZARTESİ


Güzel soru. Son zamanlarda proxy sınıfının bir benzeri yazmayı denedim ama hiç iyi bir çözüm elde etti. Bir üye arıyordu bulduğum en iyi proxy r-değeri: bir olmak istediği her kullanımda fonksiyonu

ORef<T> move() {
    return ORef<T>( this->release() );
}

Bu değişiklikler semantik ilan bir şey bir r-değeri: std::move(proxy) proxy.move(), ama aynı zamanda sağlar ihtimali dönen bir nesnenin farklı bir türü (örtük olarak dönüştürülebilir için gerekli yazın).

Benim uygulama kodlama kullanarak bunun için her zaman pas proxy nesneleri olarak rvalues olan zorla el ile şartname anlambilim (hareket, paylaşılan başvuru, kopya ya da her neyse), ama elbette yapar kullanım hataları potansiyel bir sorun (örneğin arama x.move() önce son kullanım x).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Animation Workshop

    Animation Wo

    8 NİSAN 2010
  • Menglong Tav

    Menglong Tav

    18 Temmuz 2010
  • Vsauce

    Vsauce

    30 Temmuz 2007