Reduced from http://stackoverflow.com/q/38213809/2756719. Repro: class Meow { protected: Meow() =default; virtual void f() {} }; class Purr : public Meow { public: Purr() : Meow{} {} }; prog.cc: In constructor 'Purr::Purr()': prog.cc:12:14: error: 'constexpr Meow::Meow()' is protected within this context : Meow{} ^ prog.cc:4:5: note: declared protected here Meow() =default; ^~~~ Possibly related to PR63151, however this example reproduces in GCC 4.7.3 and 4.8.5 (on Wandbox), while that PR is known to work in 4.8.2.
Confirmed with r175640 as the apparent cause of the regression: r175640 | jason | 2011-06-29 10:09:03 -0400 (Wed, 29 Jun 2011) | 3 lines * init.c (build_value_init): Decide whether or not to zero-initialize based on user-providedness of default ctor, not any ctor. (build_value_init_noctor): Adjust assert.
see also 66847, 66617, 55922
Yep, same issue as 63151. *** This bug has been marked as a duplicate of bug 63151 ***