Während ich diese Antwort schrieb , wurde mir klar, dass ich nicht so überzeugt von meinen Schlussfolgerungen bin, wie ich normalerweise vor dem Schlagen sicherstellen würde Hinterlegen Sie Ihre Antwort .
Ich finde ein paar ziemlich überzeugende Zitate für das Argument, dass die Trivialkopierbarkeit von volatile
-Datenmitgliedern entweder implementierungsdefiniert oder nicht erlaubt ist:
Aber ich war nicht in der Lage, dies im Standard 1 selbst zu unterstützen. Besonders "besorgniserregend" ist, dass es keine Anzeichen dafür gibt, dass die vorgeschlagene Formulierung in der Endfassung des aktuellen Standards von der n3159-Themenliste abweicht.
Also, was gibt es? Sind volatile
-Datenelemente trivial kopierbar oder nicht?
1 C ++ 11
Ich sehe folgende Definition für "trivial copyable" (C ++ 11 §3.9, Absatz 9):
... Skalare Typen, trivial kopierbare Klassentypen, Arrays solcher Typen, und cv-qualifizierte Versionen dieser Typen werden gemeinsam als trivial copyable
Typen ....
cv-qualifiziert enthält definitionsgemäß const
und / oder volatile
(§3.9.3). Es scheint daher, dass volatile
-Werte explizit trivial kopierbar sind, wenn der nicht qualifizierte Typ trivial kopierbar wäre (ein skalarer oder trivial kopierbarer Klassentyp oder ein Array davon).
Tags und Links c++ c++11 language-lawyer volatile