https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115098
--- Comment #3 from 康桓瑋 <hewillk at gmail dot com> --- (In reply to Jonathan Wakely from comment #2) > (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. [template.bitset.general] clearly specifies that bitset::reference's default constructor is private, doesn't it?