Мне очень понравилась библиотекаUltimate++, понравилась своей архитектурой.
В частности, в описании приводится такойтекст:

> -- Цитата:
> In Ultimate++, most objects are bound to some logical scope. As a result, you will not see many new operators in code using Ultimate++ and almost no delete operators outside the implementation of containers.That of course does not mean you are not allowed to use pointers, but it is good practice to use pointers just to point to things, never to manage heap resources. This also avoids all confusion regarding ownership of the underlying object, time of its deletion etc. If you need to manage data sets of variable size or polymorphic type, you should prefer using one of Ultimate++ containers.Speaking about it, there are no shared smart pointers (like boost::shared_ptr) in Ultimate++ used to manage heap resources at interface level. They are not needed and considered bad practice.
Представляется очень интересным, близко по духу к Оберонам.
Да и исходники (для конечного пользователя, правда) выглядят не страшно.