From ee66eb132857737995fc3c22777d4705f3afd82b Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Mon, 7 Mar 2016 21:57:10 +0000 Subject: non-member swap for array was mistakenly taking const ref params. Fixed and added test. Thanks to Ben Craig for the catch llvm-svn: 262866 --- .../sequences/array/array.swap/swap.pass.cpp | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'libcxx/test/std/containers/sequences/array/array.swap/swap.pass.cpp') 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 @@ // // void swap(array& a); +// namespace std { void swap(array &x, array &y); -#include #include +#include // std::array is explicitly allowed to be initialized with A a = { init-list };. // Disable the missing braces warning for this reason. @@ -35,6 +36,22 @@ int main() assert(c2[1] == 2); assert(c2[2] == 3.5); } + { + typedef double T; + typedef std::array 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 C; @@ -44,4 +61,14 @@ int main() assert(c1.size() == 0); assert(c2.size() == 0); } + { + typedef double T; + typedef std::array C; + C c1 = {}; + C c2 = {}; + std::swap(c1, c2); + assert(c1.size() == 0); + assert(c2.size() == 0); + } + } -- cgit v1.2.3