Вопросы к Поиску с Алисой
Использование smart pointer в циклической зависимости может привести к утечке памяти. stackoverflow.com
Например, если объект A содержит интеллектуальный указатель на объект B, а объект B — обратно на объект A, то при освобождении всех указателей на A и B перед отключением A от B (или B от A) объекты A и B будут удерживать друг друга. stackoverflow.com
Однако при тщательном использовании слабых указателей (weak_ptr) можно эффективно использовать smart pointer без утечек даже с циклическими структурами. stackoverflow.com
Также для решения проблемы циклической зависимости можно разделить конструкцию на объект, который будет владеть всеми частями, и сами части (узлы цикла). stackoverflow.com Объект-владелец может использовать sharedptr или uniqueptr для автоматического управления временем жизни узлов, а сами узлы могут ссылаться друг на друга с помощью weakptr, observerptr или ссылки (Node&). stackoverflow.com