Ответ 1
g++ прав.
В стандарте С++ и в разделе 11.5/1 говорится, что "<... > доступ должен быть через указатель на ссылку, или объект самого производного класса <... > ". В случае конструкторов это означает, что B
разрешено вызывать защищенный конструктор A
только для того, чтобы построить собственный собственный подобъект.
Отметьте эту связанную с этим проблему в g++. Он был закрыт, как не ошибка.