20 Memory management library [mem]

20.4 Types for composite class design [mem.composite.types]

20.4.2 Class template polymorphic [polymorphic]

20.4.2.4 Destructor [polymorphic.dtor]

constexpr ~polymorphic();
Mandates: T is a complete type.
Effects: If *this is not valueless, calls allocator_traits<Allocator>​::​destroy(p), where p is a pointer of type U* to the owned object and U is the type of the owned object; then the storage is deallocated.