Doesn't the Ada.Finalization package (since Ada 2005) give you this anyway?
Any variable declared as controlled type will have their "destructor" called just like C++, and that is what matters.
Like like RAII doesn't do anything, if the type is heap allocated and due to a bug not deleted or freed(), and someone has to write the destructor code, just like someone has to write the controlled type.
Does Ada come with optional garbage collection, at least? Memory leaks are a big safety concern, perhaps the biggest in practical code, and IIRC Ada still doesn't have GC "by default" for some unimaginable reason.
Additionally Ada controls many types directly like strings and vectors, and storage pools.
I recommend the FOSDEM talk about Ada memory management.