假设我需要执行以下操作(这只是一些用于讨论 C++ 标准的富有想象力的代码,因此我不会讨论我为什么要这样设计它,所以不要用类似的东西来打扰我:你的设计是错误的.)
T* ptr = new T;
shared_ptr<T> p(ptr);
shared_ptr<T> q(ptr, SomeDeleterThatDoesnotDeleteButDoSomeOtherStuff());
假设逻辑保证p
或其某些副本比 的所有副本寿命更长q
,因此实际上不会有任何问题。我的问题是,C++ 标准是否禁止不同的 shared_ptr 计数器共享相同的地址,例如 C++ 标准明确表示为 UB?
谢谢。