https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68350
Bug ID: 68350 Summary: std::uninitialized_copy overly restrictive for trivially_copyable types Product: gcc Version: 5.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: philipp.ochsendorf+gcc at gmail dot com Target Milestone: --- I think the following decision is too restrictive: return std::__uninitialized_copy<__is_trivial(_ValueType1) && __is_trivial(_ValueType2) && __assignable>:: __uninit_copy(__first, __last, __result); (cf. stl_uninitialized.h:123ff). The following should be sufficient: return std::__uninitialized_copy<is_trivially_copyable(_ValueType1) && is_trivially_copyable(_ValueType2) && __assignable>:: __uninit_copy(__first, __last, __result); Found this in 5.2.0 and 6.0. Probably it's in versions prior to 5.2.0 as well.