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

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • Djbasilio AuToBaSs

    Djbasilio Au

    20 Aralık 2008
  • TV and Lust

    TV and Lust

    26 HAZİRAN 2006