https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80553
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> --- All standard library requirements produce undefined behaviour when violated, unless specified otherwise. I'm trying to fix that: https://wg21.link/p0411r0 It probably won't be possible to enforce the "T is Erasable from X" requirement for some containers, because C++17 allows std::vector<IncompleteType> to be instantiated, and so we can't test for a usable destructor. The requirement might have to be moved to the container's destructor to be enforceable as a compile-time error.