Note that derived uses C++11 uniform initialization syntax to call the base class constructor.
class base { protected: base() {} };
Paolo Carlini, a GCC/libstdc++ contributor, confirmed it is a bug/regression.