https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104418
--- Comment #4 from Fedor Chelnokov <fchelnokov at gmail dot com> --- I think `using B::B;` is not the same as redefining each constructor with the explicit call of base class constructor `C(int a) : B{(int)a}{}`. Please consider this example proving it: ``` struct A { A() {} A(const A&) = delete; }; struct B { B(A) {} }; // ok everywhere struct C : B { using B::B; }; //error everywhere struct D : B { D(A a) : B(a) {} }; ``` Here struct C definition is fine, but struct D is ill-formed because it requires A to be copyable. Demo: https://gcc.godbolt.org/z/T7bhv9jeP