https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68350

--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #9)
> - If the input and output type are the same size and both are trivially
>   constructible, we can use memcpy.

Correction: they need to be the same type. We can't memcpy here:

struct A { };
struct B { B() = default; B(A) { do_stuff(); } };

void (A* f, A* l, B* out) {
  std::uninitialized_copy(f, l, out);
}

Both types are trivially copyable, but using memcpy is only valid for a single
type.

Reply via email to