This is an implementation of the Standard is_swappable traits according to http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0185r1.html
During that work it has been found that std::array's member swap's exception specification for zero-size arrays was incorrectly depending on the value_type and that was fixed as well. This patch is *untested*, because I cannot make the tests run on my Windows system. Upon the suggestion of Mike Stump I'm proposing this patch nonetheless, asking for sending me as specific feedback as possible for any failing tests so that I can try to make further adjustments if needed. Thanks for your patience, - Daniel