There should be a fancy way to copy/swap raw data with a known alignment. See PR42832 where one has to resort to memcpy and a temporary object for {str,tr1}::functional::swap
-- Summary: Want __gnu_cxx::uninitialized_aligned_{copy,swap} Product: gcc Version: 4.5.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rguenth at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42845