https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115098
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- And the default constructor *is* private in libstdc++. Your example comment 1 uses a non-standard constructor, not the default constructor.