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.

Reply via email to