Вы избегаете этого по замыслу.Как замечательно отметил Стефан Т. Лававей на конференции GoingNative2012 (вы можете посмотреть видео онлайн), «владение» - это ориентированный ациклический граф, DAG.В DAG нет циклов.Если ваш график владения не DAG, ваш дизайн… сомнителен, потому что A, владеющий B и B, владеющий A, не имеет смысла.Но shared_ptr - это «указатель общего владения».Объект или область видимости, содержащая такой указатель, являются владельцем объекта.Попытайтесь думать с точки зрения графиков собственности.
shared_ptr не является подходящим инструментом для каждого случая.Он не должен позволять вам кодировать так же, как вы делаете это, скажем, в Java, где вам не нужно много думать о владении.Предполагается обеспечить автоматическую и детерминированную очистку.Если вам нужен указатель «не владеющий», то будет уместен слабый указатель или необработанный указатель.Просто убедитесь, что объект, на который указывает необработанный указатель, остается живым достаточно долго.