2012-11-15 7 views
9

Mentre scrivevo this answer mi sono reso conto che non ero così sicuro delle mie conclusioni, come di solito mi sarei assicurato prima di colpire Invia la tua risposta.I membri di dati volatili sono semplicemente copiabili?

posso trovare un paio di citazioni ragionevolmente convincenti per l'argomento che la banale-copyability di volatile membri di dati o è definito dall'implementazione o flat-out consentiti:

Ma non sono stato in grado di eseguire il backup nello standard stesso. In particolare, "preoccupante" è che non vi è alcun segno della modifica della dicitura proposta da quella lista di questioni n3159 nel testo finale dello standard attuale.

Quindi, cosa dà? I membri dei dati volatile sono semplicemente copiabili o no?


  C++ 11

+0

Ho appena notato che la modifica della dicitura proposta nel numero 496 è solo un mese o così vecchio e, come tale, post-date C++ 11. È quindi ancora attivo. Immagino quindi che sto solo facendo la stessa domanda di Maddock nel 2004 con # 496. –

risposta

1

sto vedendo la seguente definizione per "banalmente copiabile" (C++ 11 §3.9, paragrafo 9):

... tipi di classi scalari, tipi di classe banalmente copiabili, matrici di tali tipi, e qualificate per cv versioni di questi tipi sono chiamate collettivamente banalmente copiabili tipi ....

cv-qualificato per definizione comprende conste/ovolatile (§3.9.3). Sembrerebbe quindi che i valori di volatile siano esplicitamente banali, se il tipo non qualificato sarebbe banalmente copiato (un tipo di classe scalare o di entità banale, o una matrice).

+0

Ma guarda il numero 496 che suggerisce che questa formulazione è imprecisa e possibilmente in contrasto con la dicitura altrove. Il brano che citi viene individuato esplicitamente lì. –

+0

@LightnessRacesinOrbit: 'volatile' in C++ è piuttosto diverso da, ad esempio, in Java. Non ho visto dove implica atomicità in C++, e quindi presumo che non lo faccia. Questa è l'unica interpretazione che riesco a trovare che sia coerente con il resto dello standard. – cHao

+0

Tranne i membri del comitato evidentemente in disaccordo, rendendo questo inconcludente. Da qui la mia domanda :(Il problema è che, mentre lo standard non garantisce l'atomicità per gli oggetti 'volatili', è discutibilmente sufficientemente vago circa la proprietà di oggetti" volatili "da implicare la definizione di implementazione per la maggior parte di essi. è da lì che proveniva Maddock. In questo momento sto quasi anticipando un DR. –

Problemi correlati