Предположим, мне нужно сделать следующее (Это всего лишь образный код для обсуждения стандарта C++, поэтому я не буду обсуждать, почему я разрабатываю его таким образом, так что не беспокойте меня чем-то вроде :ваш дизайн неправильный.)
T* ptr = new T;
shared_ptr<T> p(ptr);
shared_ptr<T> q(ptr, SomeDeleterThatDoesnotDeleteButDoSomeOtherStuff());
Предположим, что логика гарантирует, что p
или некоторые его копии живут дольше, чем все копии q
, так что проблем практически не будет. Мой вопрос в том, запрещено ли это стандартом С++, например. явно указано как UB по стандарту С++, чтобы разные общие счетчики _ptr использовали один и тот же адрес?
Спасибо.