Один и тот же адрес, несколько общих счетчиков _ptr, запрещено ли это стандартом C++?

Предположим, мне нужно сделать следующее (Это всего лишь образный код для обсуждения стандарта C++, поэтому я не буду обсуждать, почему я разрабатываю его таким образом, так что не беспокойте меня чем-то вроде :ваш дизайн неправильный.)

T* ptr = new T;
shared_ptr<T> p(ptr);
shared_ptr<T> q(ptr, SomeDeleterThatDoesnotDeleteButDoSomeOtherStuff());

Предположим, что логика гарантирует, что pили некоторые его копии живут дольше, чем все копии q, так что проблем практически не будет. Мой вопрос в том, запрещено ли это стандартом С++, например. явно указано как UB по стандарту С++, чтобы разные общие счетчики _ptr использовали один и тот же адрес?

Спасибо.

6
задан curiousguy 29 July 2012 в 02:32
поделиться