Note that derived uses C++11 uniform initialization syntax to call the base class constructor.
class base { protected: base() {} };
It is probably because in version 4.7 C11 explicit override control was added.