https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115098
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to 康桓瑋 from comment #1) > std::bitset has similar issues: > > #include <bitset> > > std::bitset<1> bitset; > typename std::bitset<1>::reference bit_ref(bitset, 0); // well-formed in > libstdc++ This one's not a bug, the standard doesn't say there's any such constructor, so there's no requirement for it to be private. [member.functions] allows us to add extra constructors, as long as they don't alter the semantics of any well-formed program.