2016-04-08 32 views
1

'u bir uzmanlık konusunda özel bir soru sorabilir miyim?açık bir şekilde std: shared_ptr :: operator ->

ben Shared_ptr :: operatöre> gcc üzerinde derlemek alışkanlık aşağıdaki 4.8.3

template<> 
widget* std::shared_ptr<widget>::operator->() const 
{ 
    return nullptr; 
} 

aşağıdaki derleme hata hatası alıyorum bir uzmanlık sağlamak istiyorum: hayır üye işlev 'operatöre > '' std :: shared_ptr 'içinde bildirildi'

Bunun nasıl özelleştirileceğine dair birkaç varyasyon denedim ve aynı hatayı almaya devam ediyorum. ör., bir ad alanı std kapsamına sarma, aynı zamanda tekrarlayan türler denedim, noexcept vs vs yapma

+1

Bunu neden yapmak istiyorsunuz? – NathanOliver

+0

Ah, probs yok, akıllı işaretçiler kullanarak bazı ön ve sonrası koşullarını yazmaya çalışıyorum. Kendimi yazdığım bir el yazısıyla yazılmış akıllı işaretçiyi kullanarak onları kolayca çalıştırabilirim, ancak bazı prebuilt'leri kullanıp kullanamayacağımı görmek istedim. STL veya destek. – PMcK

+0

Belki bu soruya bir göz atın: http://stackoverflow.com/questions/15876325/how-can-i-create-a-smart-pointer-that-locks-and-unlocks-a-mutex – Rerito

cevap

3

Hayır, std içindeki üye işlevlerinden uzman olamazsınız. Bunu yapmak programınızı kötü biçimlendirir (ve hiçbir teşhis gerekmediğine inanıyorum). "Çalışır" olsa bile yasadışıdır.

Kullanıcının temin ettiği bir tür için türün tamamını uzmanlaştırabilirsiniz, ancak temel olarak std::shared_ptr'u sıfırdan yazmayı içerir.

+1

http://eel.is/c++draft/constraints#namespace.std-2 –

İlgili konular