https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56383
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- On trunk it's now also possible to mix std::enable_shared_from_this and std::__enable_shared_from_this bases without a hard error: struct A : std::enable_shared_from_this<A> { void* a() { return shared_from_this().get(); } }; struct B : std::__enable_shared_from_this<B> { };