Tip `bu` statik üye işlev?
C 5.1.1/3 [ifade.prim.genel] diyor ki:
Türü ve değeri kategori [
this
] statik bir üye işlev içinde tanımlanmış.
Bu ne anlama geliyor? Nasıl bir ilgisi var mı?
Not:
this
statik üyesine bir işlev bildiriminde görünür olmayacaktır
CEVAP
Standart dil kusurları 1207 1017 için bir çözüm olan n3282, takip edilebilir. Özellikle, dil hatası için önerilen çözünürlük 1207, ve böylece arıza giderilmiş şu anda durdu gibi bu standart kapsamında düşünülmelidir görünür. O zaman oraya üye erişim ifadeler içine id-ifadelerin yeniden *this
(9.3.kullanarak bazı endişeler vardı 1p3), firar-dönüş-tür bildirimleri (sayı 945) bağlamında özellikle.
Eğer standart n3282 nihai dili için ve daha sonra 1207 kusur önerilen çözünürlük karşılaştırırsak, 9.3 için önemli bir fark vardır.1p3:
Kusur 1207:
Bir kimliği ifade (5.1 [ifade.prim]) sınıf üyesi erişim sözdizimi bir parçası değildir (5.2.5 [ifade.ref]) ve bir işaretçi forma üye alışık değil (5.3.1 [ifade.tekli.op]) kullanılırüye Bildirgesi Sınıfı
X
işleviadı araması, (3.4 [temel.arama]) giderir adı
n3282 ve C 11:
Bir kimliği ifade (5.1 [ifade.prim]) sınıf üyesi erişim sözdizimi bir parçası değildir (5.2.5 [ifade.ref]) ve bir işaretçi forma üye alışık değil (5.3.1 [ifade.tekli.op]) kullanılır
this
kullanılabilir bir bağlamda sınıfX
(5.1.1 [ifade.prim.genel])adı araması, (3.4 [temel.arama]) adını çözer [...]
Bu belli ki, önerilen çözüm için kusur 1207 taşıdığı inanç kimliği-ifadeler (bir statik üye) içinde statik bir üye işlev için ne yapmalıyım? olmak dönüştürdü *this
üye erişim ifadeler ve böylece gerek erişim tipi ve değeri kategori this
. N3282 yazıldığı zaman bu nitelikli-kimlik dönüşümü (9.3.lehine çözülmüştüthis
, gerektirmeyen 1p3) ama 5.1 dil.1p3 vestigially kaldı.
C standartları tartışma eklemek yükselterek bu sorunu tavsiye ederim; körelmiş dil editoryal görevden almak mümkün olabilir.
İşlev düzeyinde statik değişkenler ayr...
C statik işlev...
Tip `bu` statik üye işlev?...
Bir işlev içinde statik değişkenler Py...
Statik bir std::başlatılıyor göster<...