Если мы предположим, что std::shared_ptr
хранит счетчик ссылок (который я понимаю, стандарт не требует, но я не знаю о каких-либо реализациях, которые этого не делают), этот счетчик ссылок имеет ограниченное количество бит, а это означает существует максимальное количество ссылок, которые поддерживаются. Это приводит к двум вопросам:
- Что это за максимальное значение?
- Что произойдет, если вы попытаетесь его превзойти (например, скопировав std:: shared_ptr, который ссылается на объект с максимальным количеством ссылок)? Обратите внимание, что конструктор
std::shared_ptr
copy объявленnoexcept
.
Является ли стандартом пролить свет на любой из этих вопросов? Как насчет общих реализаций, например gcc, MSVC, Boost?