Обратите внимание, что в производном используется синтаксис синтаксиса С++ 11 для вызова конструктора базового класса.
class base
{
    protected:
        base()
        {}
};
class derived : public base
{
    public:
        derived()
            : base{} // <-- Note the c++11 curly brace syntax
                     // using uniform initialization. Change the
                     // braces to () and it works.
        {}
};
int main()
{
    derived d1;
    return 0;
}
g++ 4.6 компилирует это, однако g++ 4.7 не делает:
$ g++-4.7 -std=c++11 -Wall -Wextra -pedantic curly.cpp -o curly
curly.cpp: In constructor ‘derived::derived()’:
curly.cpp:4:13: error: ‘base::base()’ is protected
curly.cpp:19:24: error: within this context
Что происходит?
Обновление 1: оно также компилируется без предупреждений с помощью clang++ - 3.1 
Обновление 2: Похоже на ошибку компилятора. По-видимому, это исправлено в GCC 4.7.3.