Sind flüchtige Datenelemente trivial kopierbar?

9

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

    
Lightness Races in Orbit 15.11.2012, 22:57
quelle

1 Antwort

1

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).

    
cHao 17.11.2012 06:00
quelle