Читать «Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14» онлайн - страница 226
Скотт Мейерс
26
Разумной отправной точкой для начала изучения этого вопроса является запись в моем блоге от 24 декабря 2013 года в
27
Это справедливо только для std::аtomic
, использующих std::atomic
, использующих показанный в этой книге синтаксис. C++11 поддерживает также модели согласованности с более гибкими правилами переупорядочения кода. Такие
28
Тип y
получается с помощью вывода auto
, так что используются правила, описанные в разделе 1.2. Эти правила предписывают, чтобы для объявления типов, не являющихся ссылочными или типами указателей (что и выполняется о случае y
), квалификаторы const
и volatile
были опущены. Следовательно, типом y
является просто int
. Это означает, что избыточные чтения и записи y
могут быть удалены. В приведенном примере компиляторы должны выполнять и инициализацию, и присваивание y
, поскольку x
объявлена как volatile
, так что второе чтение x
может давать другое значение, отличное от первого.
29
В данном разделе “копирование” параметра в общем случае означает его использование как источника для операций копирования или перемещения. Помните, что в С++ нет терминологического различия между копированием, выполняемым с помощью операции копирования, и копированием с помощью операции перемещения.
30
Для таких предложений хорошо бы иметь терминологию, отличающую копирование с помощью копирующего конструктора от копирования с помощью перемещающего конструктора.