https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64476
Bug ID: 64476 Summary: std::uninitialized_copy tests assignability the wrong way, resulting in performance pessimization Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: gcc-bugzilla at contacts dot eelis.net It does: typedef typename iterator_traits<_InputIterator>::reference _RefType; const bool __assignable = is_assignable<_ValueType1, _RefType>::value; but should do: typedef typename iterator_traits<_ForwardIterator>::reference _RefType; const bool __assignable = is_assignable<_RefType, _ValueType1>::value;