Пока пишу этот ответ Я понял, что я не настолько уверен в своих выводах, как обычно гарантирую, прежде чем ударить Разместить ответ.
Я могу найти несколько достаточно убедительных цитат для аргумента, что тривиальное копируемость volatile
члены данных либо определены реализацией, либо категорически запрещены:
Но я не смог подтвердить это в стандарте1 сам. Особенно «беспокоит» то, что нет никаких признаков предлагаемого изменения формулировки из списка проблем n3159 в окончательной редакции фактического стандарта.
Итак, что дает? Являются volatile
данные участников тривиально копируемые или нет?
1 C ++ 11
Я вижу следующее определение «тривиально копируемого» (C ++ 11 §3.9, параграф 9):
…Скалярные типы, тривиально копируемые типы классов, массивы таких типов, а также резюме квалифицированных версии этих типов все вместе называются тривиально копируемый виды ….
резюме квалифицированных по определению включает const
и / или volatile
(§3.9.3). Поэтому представляется, что volatile
значения могут быть явно тривиально копируемыми, если неквалифицированный тип будет тривиально копируемым (скалярный или тривиально копируемый тип класса или его массив).
Других решений пока нет …