[Bug libstdc++/53646] Surprising effects of cxx11 vs cxx98 ABI compatibility

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jun 12 15:50:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53646

--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-06-12 15:50:05 UTC ---
Trivially copyable is just one small part of the POD requirements. std::pair
has always been non-POD, even in c++98, but in c++98 it is trivially copyable,
in c++11 that move constructor is non-trivial.

It can be made trivial by changing it to:

      pair(pair&& __p)
      noexcept(__and_<is_nothrow_move_constructible<_T1>,
               is_nothrow_move_constructible<_T2>>::value)
      = default;

That might fix this problem, could you test it?



More information about the Gcc-bugs mailing list