При попытке обернуть голову вокруг проблемы, показанной в этом вопросе, я обнаружил, что придерживался следующего предложения из [util.smartptr.shared]/4:
[...] Изменения в
use_count()
не отражают изменений, которые могут приводить к расам данных.
Я не понимаю, как я должен это прочитать и какие выводы я должен сделать. Вот несколько интерпретаций:
- Вызов
use_count()
не вводит расы данных (но это должно быть гарантировано только функциейconst
только этой функции вместе с соответствующими библиотечными гарантиями) - На значение, возвращаемое
use_count()
, не влияет ( "не отражает"?) результат операций, которые требуют атомарности или синхронизации (но каковы эти соответствующие операции?) -
use_count()
выполняется атомарно, но не препятствует переупорядочению процессором или компилятором (т.е. без последовательной согласованности, но тогда почему не упоминается конкретная модель?)
Для меня ни одно из вышеизложенных, похоже, не следует из этого предложения, и я нахожусь в убытке, пытаясь его интерпретировать.