https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119075
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
You can construct a contrived testcase that fails the same way due to the
_Bit_reference(_Bit_type*, _Bit_type) constructor:
#include <vector>
#include <type_traits>
struct X { X(int, int) { } };
int test2(std::vector<bool>::reference);
void test2(X);
static_assert(std::is_same<decltype(test2({0,0})), void>::value, "");
This is ambiguous for the same reason. But we can't remove all private
constructors, we need to be able to construct it.