diff options
-rw-r--r-- | libcxx/include/array | 2 | ||||
-rw-r--r-- | libcxx/test/std/containers/sequences/array/array.swap/swap.pass.cpp | 29 |
2 files changed, 29 insertions, 2 deletions
diff --git a/libcxx/include/array b/libcxx/include/array index 8866eaf6b46..f0350ea216e 100644 --- a/libcxx/include/array +++ b/libcxx/include/array @@ -279,7 +279,7 @@ typename enable_if __is_swappable<_Tp>::value, void >::type -swap(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) +swap(array<_Tp, _Size>& __x, array<_Tp, _Size>& __y) _NOEXCEPT_(__is_nothrow_swappable<_Tp>::value) { __x.swap(__y); diff --git a/libcxx/test/std/containers/sequences/array/array.swap/swap.pass.cpp b/libcxx/test/std/containers/sequences/array/array.swap/swap.pass.cpp index 651798e1e79..91ebe419a0a 100644 --- a/libcxx/test/std/containers/sequences/array/array.swap/swap.pass.cpp +++ b/libcxx/test/std/containers/sequences/array/array.swap/swap.pass.cpp @@ -10,9 +10,10 @@ // <array> // void swap(array& a); +// namespace std { void swap(array<T, N> &x, array<T, N> &y); -#include <array> #include <cassert> +#include <array> // std::array is explicitly allowed to be initialized with A a = { init-list };. // Disable the missing braces warning for this reason. @@ -37,6 +38,22 @@ int main() } { typedef double T; + typedef std::array<T, 3> C; + C c1 = {1, 2, 3.5}; + C c2 = {4, 5, 6.5}; + std::swap(c1, c2); + assert(c1.size() == 3); + assert(c1[0] == 4); + assert(c1[1] == 5); + assert(c1[2] == 6.5); + assert(c2.size() == 3); + assert(c2[0] == 1); + assert(c2[1] == 2); + assert(c2[2] == 3.5); + } + + { + typedef double T; typedef std::array<T, 0> C; C c1 = {}; C c2 = {}; @@ -44,4 +61,14 @@ int main() assert(c1.size() == 0); assert(c2.size() == 0); } + { + typedef double T; + typedef std::array<T, 0> C; + C c1 = {}; + C c2 = {}; + std::swap(c1, c2); + assert(c1.size() == 0); + assert(c2.size() == 0); + } + } |