Even if this is not the final class, the destructor will be automatically virtual because RuntimeRegistryObserver has a virtual destructor. See the "notes" of the link bellow.

http://www.parashift.com/c++-faq/virtual-dtors.html