Это немного вопрос из двух частей, касающийся атомарности std::shared_ptr:
1.
Насколько я могу судить, std::shared_ptr является единственным умным указателем в <memory>, который является атомарным. Мне интересно, существует ли неатомная версия std::shared_ptr (я ничего не вижу в <memory>, поэтому я также открыт для предложений вне стандарта, например, в Boost). Я знаю, что boost::shared_ptr также является атомарным (если BOOST_SP_DISABLE_THREADS не определено), но может быть, есть еще одна альтернатива? Я ищу что-то, что имеет ту же семантику, что и std::shared_ptr, но без атомарности.
2. Я понимаю, почему std::shared_ptr является атомарным; это любопытно. Тем не менее, это не приятно для каждой ситуации, и на С++ исторически была мантра "только платить за то, что вы используете". Если я не использую несколько потоков, или если я использую несколько потоков, но я не разделяю права собственности на указатели на потоки, атомный умный указатель переполнен. Мой второй вопрос: почему не была неатомная версия std::shared_ptr, предоставленная в С++ 11? (при условии, что есть почему) (если ответ просто "неатомная версия просто никогда не рассматривалась" или "никто никогда не просил неатомную версию", это прекрасно!).
С вопросом № 2 мне интересно, предложил ли кто-нибудь неатомическую версию shared_ptr (либо в Boost, либо в комитете по стандартизации) (не для замены атомной версии shared_ptr, а для сосуществования с он), и он был сбит по определенной причине.