2012-11-15 4 views
9

Во время написания this answer Я понял, что я не настолько уверен в своих выводах, как обычно бывал перед ударом Опубликовать свой ответ.Являются ли изменчивые элементы данных тривиально скопируемыми?

я могу найти пару достаточно убедительных цитат для аргумента, что тривиальное-copyability из volatile элементов данных является либо определяется реализацией или утончаются запрещено:

Но я не смог поддержать это в стандарте себя. В частности, «беспокойство» заключается в том, что нет никаких признаков предлагаемого изменения формулировки из этого списка проблем n3159 в окончательной формулировке фактического стандарта.

Итак, что дает? Имеются ли элементы данных volatile тривиально с возможностью копирования или нет?


  C++ 11

+0

Я только заметил, что предложенное изменение формулировки в вопросе № 496 составляет только месяц или такой старый и, как таковой, пост-даты C++ 11. Поэтому он все еще активен. Думаю, тогда я задаю тот же вопрос, что и Мэддок, начавшийся еще в 2004 году с № 496. –

ответ

1

Я вижу следующее определение "тривиальным копируемыми" (C++ 11 §3.9, пункт 9):

... Скалярные типы, типы типов с возможностью сбрасывания типов, массивы таких типов, и cv-certified версии этих типов называются вместе тривиальным Copyable типа ....

резюме квалифицированных по определению, включает в себя constи/илиvolatile (§3.9.3). Следовательно, было бы очевидно, что значения volatile явно тривиально можно копировать, если неквалифицированный тип будет тривиально скопируемым (скалярным или тривиально-скопируемым типом класса или его массивом).

+0

Но посмотрите на вопрос № 496, в котором говорится, что эта формулировка неточна и, возможно, противоречит формулировке в другом месте. Прохождение, которое вы цитируете, явно указано там. –

+0

@LightnessRacesinOrbit: 'volatile' в C++ отличается от, например, Java. Я не видел, где он подразумевает атомарность в C++, и поэтому предположил бы, что это не так. Это единственная интерпретация, которую я могу придумать, что согласуется с остальной частью стандарта. – cHao

+0

За исключением членов комитета, очевидно, не согласны, что делает это неубедительным. Отсюда мой вопрос :(Проблема в том, что, хотя стандарт не гарантирует атомарность для «неустойчивых» объектов, он, вероятно, достаточно неопределенен в отношении _any_ свойства объектов «volatile», поскольку подразумевает определенность реализации для большинства из них. вот откуда пришел Мэддок. На данный момент я на самом деле наполовину ожидаю DR. –