#include template void swap(T& a, T& b) { T c(std::move(a)); a=std::move(b); b=std::move(c); } template void swap(T (&a)[N], T (&b)[N]) { for (std::size_t i = 0; i