C++ 11 Aşağıdaki birlik bildirmek: I -std kullanılarak 4.7.0 g ++ bu kodu derlemeC++ 11, anonim olmayan sendikaların statik veri üyeleri içermesine izin veriyor mu? Gelen
union U4 {
char c;
int i;
static int si;
};
= C++ 11 -pedantic-hataları, I (aşağıdaki hatalarıyla minör düzenleme):
error: local class ‘union U4’ shall not have static data member ‘int U4::si’ [-fpermissive]
error: ‘U4::si’ may not be static because it is a member of a union
FDIS (N3242) açıkça bildiğim kadarıyla gördüğünüz gibi, adlandırılmış sendikaların statik veri üyeleri izin vermez. Ama aynı zamanda FDIS 'un, isimli durağan veri üyelerini, FDIS'in "statik olmayan veri üyeleriyle" [bölüm 9.5 paragraf 1] ne yapılabileceğine tekrar tekrar başvurmadığını da göremiyorum. Aksine, standart, sendikaların statik veri üyelerine izin verir.
Sendikanın statik veri üyesi için herhangi bir kullanım amacı yoktur. İhtiyacım olsaydı, muhtemelen anonim birliği içeren bir sınıfla yeterince yakın bir etki elde edebilirdim. Ben sadece standardın amacını anlamaya çalışıyorum. Yardım için
teşekkürler.
Birincisi, yerel sınıf tipleri, ('§9.4.2/5') genel olarak statik veri üyesi var izin verilmez. Yerel olmayan bir sendikadaki statik veri üyesi için Clang iyi bir şekilde derler. – Xeo