This is a reimplementation of __is_swappable and __is_nothrow_swappable according to
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4511.html and also adds a missing usage of __is_nothrow_swappable in the swap overload for arrays. Strictly speaking the latter change differs from the Standard specification which requires the expression noexcept(swap(*a, *b)) to be used. On the other hand the Standard is broken in this regard, as pointed out by http://cplusplus.github.io/LWG/lwg-active.html#2554 Thanks, - Daniel
changelog.patch
Description: Binary data
68877.patch
Description: Binary data