https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122313
--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> --- Then I think the standard should clarify what Cpp17EmplaceConstructible means for vector<bool>. Just saying it doesn't use allocator_traits::construct makes Cpp17EmplaceConstructible completely vacuous for vector<bool>. Does bool even have to be constructible from args if we just say it doesn't use allocator_traits::construct? Maybe we should say that it uses allocator_traits<std::allocator<bool>>::construct instead of allocator_traits<allocator_type>::construct. That would be equivalent to std::construct_at, which will value-init a bool from the args. That would make it clear that comment 8 should work, because the explicit conversion would be used, not the deleted one. I'll open an issue.
