Здравствуйте, MTD, Вы писали:
N>>Как решена проблема циклических ссылок?
MTD>shared_ptr/weak_ptr, но замечу, что циклические ссылки — проблема кривого дизайна
Как удобно — списал все неприятные случаи на "кривой дизайн" и доволен, что C++ разрешает справиться с остальными случаями.
Я неоднократно встречался с ситуациями, когда естественным представлением предметной области является "сеть" объектов в памяти со многими связями. Например, такое типично в картографии, или в анализе структур человеческих связей. В результате в таких структурах 1) приходилось реализовывать наколенный GC в виде счётчиков ссылок (этих самых shared_ptr или аналогов), 2) реализовывать учёт групповой принадлежности объекта и массовое освобождение по этой принадлежности. А теперь, если вспомнить, что даже там, где подсчёт ссылок работает, он становится неэффективен в широкопараллельной среде, становится понятно, что GC ложился бы на такие задачи значительно естественнее.