§ 9.5/9 aus der C++ 11 Standard (Hervorhebung von mir):Potenziell mehrdeutige Aussage in § 9.5/8
A Vereinigung artige Klasse ist eine Vereinigung oder eine Klasse, die ein anonymes hat Gewerkschaft als direktes Mitglied. Eine Union-ähnliche Klasse
X
hat eine Reihe von Variante Mitglieder. WennX
einunion
ist, ist ein nicht statisches Datenelement vonX
, das keine anonyme Union ist, ein variantes Mitglied vonX
.
Ist das Teil in fett Spruch, dass die zwischen einer Vereinigung artigen Klasse entweder eine Klasse oder eine Vereinigung ist, nur dann, wenn es sich um eine Vereinigung ist, kann es eine nicht-statische Variante Mitglied haben, das nicht eine anonyme Union ist ? Wenn das so ist, warum? Und welchen praktischen Unterschied macht es im Code?
Ich bin tatsächlich in Frage, ob diese Aussage sagen wollte "Wenn X
ist eine Union-ähnliche Klasse ...". Es würde mir dann voll und ganz Sinn machen.
Wie auch immer, diese Klausel hat mich in den letzten paar Tagen gestört und ich möchte vollständig verstehen, was es sagt.
Die Terminologie "variantes Mitglied" bezieht sich auf das Konzept einer "Variante" (z. B. "VARIANT" in Windows). Der fett gedruckte Text definiert * variant member * für den Fall, dass 'X' eine Union ist. Der folgende Satz (den Sie nicht zitiert haben) definiert * variant member * für den Fall, dass 'X' keine Union ist, und für den Fall von anonymen Vereinigungen, die ein Mitglied von' X' sind. –