Конструктор с аргументами по умолчанию не может быть вызван при наследовании
Пожалуйста, посмотрите на код:
struct X {};
struct Foo {
Foo (int n = {}, int p = {}) {}
};
struct Boo : Foo {
using Foo::Foo;
Boo (X n) {}
};
И использование:
Boo boo1;
Сообщение об ошибке (GCC 5.2.1):
error: no matching function for call to ‘Boo::Boo()’
я знаю это Boo
не имеет конструктора по умолчанию, но конструктор Foo
был унаследован и не может быть назван таким образом. Зачем? Означает ли это, что унаследованный конструктор может вызываться только в том случае, если производный класс не имеет конструктора (или конструктора по умолчанию)?