Nein.
Die einzige Möglichkeit, ein Element festzulegen, das auf etwas verweist, ist ein benutzerdefinierter Konstruktor. Daher ist Ihre Struktur nicht-POD.
Aktualisierung:
Die Antwort ist immer noch nein.
Der C ++ 03-Standard gibt an, dass " Eine POD-Struktur eine Aggregatklasse ist, die keine nicht statischen Datenelemente vom Typ non-POD-struct, nicht-POD-union (oder Array solcher Typen) hat ) oder Referenz und ... "(C ++ 03 Standardsekt. 9 Abs. 5).
In C ++ 11 ist eine POD-Struktur " eine Klasse, die sowohl eine triviale Klasse als auch eine Standard-Layout-Klasse ist, und ... " und eine Standard-Layout-Klasse "< em> hat keine nicht statischen Datenelemente vom Typ Nicht-Standard-Layout-Klasse (oder Array von solchen Typen) oder Referenz "(C ++ 11-Standard-Abschnitt 9 Abs. 6-9).
>Ich parse diejenigen Phrasen, die mit "oder referenzieren" enden, um sofort zu bedeuten, dass eine POD-Klasse keine nicht statischen Datenelemente enthalten darf, die von irgendeinem Referenztyp sind. Das Fehlen eines Kommas vor der "oder Referenz" macht andere Interpretationen möglich (z. B. ist es eine Referenz auf eine Nicht-POD-Klasse, die die Referenz schlecht macht, keine Referenz per se ), sondern Ich bleibe bei meiner Interpretation.
Ein POD-Typ ist ein beliebiger intrinsischer Typ oder ein Aggregat von intrinsischen Typen (im Prinzip alles, was keinen benutzerdefinierten Konstruktor, Destruktor, Kopierkonstruktor, Kopierzuweisungsoperator oder nicht-statische Zeiger-zu-Element-Typen hat) Details hier )
Da ein Element, das auf etwas verweist, über einen benutzerdefinierten Konstruktor festgelegt werden muss, würde es die erste Anforderung verletzen. Kurz gesagt, eine Struktur, die einen Referenztyp als Mitglied deklariert, ist kein POD-Typ.