[libcxx] r265672 - Fix bug #27260 - add missing swap(reference, reference) to vector<bool>.
Marshall Clow via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 7 07:20:31 PDT 2016
Author: marshall
Date: Thu Apr 7 09:20:31 2016
New Revision: 265672
URL: http://llvm.org/viewvc/llvm-project?rev=265672&view=rev
Log:
Fix bug #27260 - add missing swap(reference, reference) to vector<bool>.
Added:
libcxx/trunk/test/std/containers/sequences/vector.bool/reference.swap.pass.cpp
Modified:
libcxx/trunk/include/vector
Modified: libcxx/trunk/include/vector
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/vector?rev=265672&r1=265671&r2=265672&view=diff
==============================================================================
--- libcxx/trunk/include/vector (original)
+++ libcxx/trunk/include/vector Thu Apr 7 09:20:31 2016
@@ -2363,6 +2363,7 @@ public:
_NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
__is_nothrow_swappable<allocator_type>::value);
#endif
+ static void swap(reference __x, reference __y) _NOEXCEPT { _VSTD::swap(__x, __y); }
void resize(size_type __sz, value_type __x = false);
void flip() _NOEXCEPT;
Added: libcxx/trunk/test/std/containers/sequences/vector.bool/reference.swap.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/sequences/vector.bool/reference.swap.pass.cpp?rev=265672&view=auto
==============================================================================
--- libcxx/trunk/test/std/containers/sequences/vector.bool/reference.swap.pass.cpp (added)
+++ libcxx/trunk/test/std/containers/sequences/vector.bool/reference.swap.pass.cpp Thu Apr 7 09:20:31 2016
@@ -0,0 +1,31 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <vector>
+// vector<bool>
+
+// static void swap(reference x, reference y) noexcept;
+
+#include <vector>
+#include <cassert>
+
+int main()
+{
+ bool a[] = {false, true, false, true};
+ bool* an = a + sizeof(a)/sizeof(a[0]);
+
+ std::vector<bool> v(a, an);
+ std::vector<bool>::reference r1 = v[0];
+ std::vector<bool>::reference r2 = v[3];
+ assert(!r1);
+ assert( r2);
+ v.swap(r1, r2);
+ assert( r1);
+ assert(!r2);
+}
\ No newline at end of file
More information about the cfe-commits
mailing list