I'm reading about the Ada `access types` and, as far as I understand, the objects of `access types` that you allocate with the operator `new` are released when no one is pointing to them anymore:

So, do access types in Ada behaves exactly as `std::shared_ptr` in C++? (Apart from the Ada's pointer-related constraints that C++ doesn't have)

EDIT
====

When I say `std::shared_ptr` I mean the object is deallocated when there are no more variable pointing to them.