Standardowy projekt jak z N4567 sugeruje, że defaulted konstruktor domyślny jest zdefiniowany jako usunięte if-według 12.1, pkt 4:Dlaczego połączenie składające się z const-qualified variant members powoduje brak domyślnego domyślnego konstruktora?
X jest unia i wszystko jej członków wariancie const -kwalifikowany typ (lub jego tablica),
Innymi słowy, jest równoznaczne z powiedzeniem, że jeśli jeden z jego wariantów nie ma uprawnień warunkowych, powyższa zasada nie ma zastosowania. Moje pytanie brzmi:
- Co jest takiego specjalnego o konieczności wszystkie swoich członków const kwalifikowaną (w porównaniu do sytuacji odwrotnej, gdy co najmniej jeden z nich nie jest const kwalifikowaną), iw jakiej perspektywy jest to głęboko związane z domyślnym konstruktorem domyślnym?
nie wiem zrozum, dlaczego taka konstrukcja byłaby bezużyteczna. Byłby to niezmienny wariant. – Columbo
@ Columbo: Generalnie lepiej byłoby zaprojektować typ, aby nie wbudować niezmienności, a następnie użyć 'const Foo', aby dodać niezmienność tak, jak i kiedy chcesz. Ale to tylko wybór projektu. –