template<class T> constexpr void swap(T& a, T& b) noexcept(see below);
template<class T, size_t N> constexpr void swap(T (&a)[N], T (&b)[N]) noexcept(is_nothrow_swappable_v<T>);