On 31/07/20 23:03 +0200, François Dumont via Libstdc++ wrote:
On 17/07/20 12:36 pm, Jonathan Wakely wrote:
On 16/12/19 08:18 +0100, François Dumont wrote:
diff --git a/libstdc++-v3/testsuite/23_containers/vector/bool/allocator/swap.cc b/libstdc++-v3/testsuite/23_containers/vector/bool/allocator/swap.cc
index de441426532..745fdc85cf6 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/bool/allocator/swap.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/bool/allocator/swap.cc
@@ -28,19 +28,17 @@ namespace __gnu_test
  // It is undefined behaviour to swap() containers with unequal allocators   // if the allocator doesn't propagate, so ensure the allocators compare   // equal, while still being able to test propagation via get_personality().
+  template<typename Type>
    bool
-  operator==(const propagating_allocator<T, false>&,
-         const propagating_allocator<T, false>&)
-  {
-    return true;
-  }
+    operator==(const propagating_allocator<Type, false>&,
+           const propagating_allocator<Type, false>&)
+    { return true; }

+  template<typename Type>
    bool
-  operator!=(const propagating_allocator<T, false>&,
-         const propagating_allocator<T, false>&)
-  {
-    return false;
-  }
+    operator!=(const propagating_allocator<Type, false>&,
+           const propagating_allocator<Type, false>&)
+    { return false; }

Why does this test need to be adapted?

Because I replicate and adapt the static assertion from the main vector implementation which is:

#if __cplusplus >= 201103L
__glibcxx_assert(_Bit_alloc_traits::propagate_on_container_swap::value
             || _M_get_Bit_allocator() == __x._M_get_Bit_allocator());
#endif

in the case of vector<bool> the compared allocators are not propagating_allocator<bool, false> but propagating_allocator<unsigned long, false>.

Ah yes, of course. Thanks.


Building with __glibcxx_assert was showing this.

François


Reply via email to