На мой взгляд, сборка мусора на C++ — задача утопическая, особенно для случая уплотняющих алгоритмов. И эта утопичность исходит из сущности указателей, которые растут из C, которые в свою очередь растут из простой косвенной адресации. То есть, сборка мусора должна быть встроена в язык (а в идеале — в процессор!), со всеми вытекающими последствиями, в том числе и с неизбежными потерями производительности, ну типа, как это реализовано в MC++ и вообще в MSIL. При создании C и C++ не было такой задачи — и это правильно, поскольку C++ призван быть максимально эффективным языком. А раз так, то только ручками — new/delete. Я и сам использую "хитрые указатели", но крайне ограниченно. А вот автоматическая сборка мусора ничего кроме дополнительных проблем не создает. Причем, на первый вгляд кажется, что все хорошо, но в сложных проектах, особенно в многопоточных, это "все хорошо" зачастую становится источником трудноуловимых ошибок.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.