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

Reply via email to