Fix undefined behavior in container swap tests.
authorEric Fiselier <eric@efcs.ca>
Sun, 11 Dec 2016 03:41:12 +0000 (03:41 +0000)
committerEric Fiselier <eric@efcs.ca>
Sun, 11 Dec 2016 03:41:12 +0000 (03:41 +0000)
commit1286bc577f70c5b8caa83b2440484fbbb3b15a6e
tree98844f59716c7a4843315020a26019dfc474f054
parentb6398818780314c84e796ec1d4b1dbda27ddf554
Fix undefined behavior in container swap tests.

These swap tests were swapping non-POCS non-equal allocators which
is undefined behavior. This patch changes the tests to use allocators
which compare equal. In order to test that the allocators were not
swapped I added an "id" field to test_allocator which does not
participate in equality but does propagate across copies/swaps.

This patch is based off of D26623 which was submitted by STL.

llvm-svn: 289358
18 files changed:
libcxx/test/std/containers/associative/map/map.special/non_member_swap.pass.cpp
libcxx/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp
libcxx/test/std/containers/associative/multiset/multiset.special/non_member_swap.pass.cpp
libcxx/test/std/containers/associative/set/set.special/non_member_swap.pass.cpp
libcxx/test/std/containers/sequences/deque/deque.special/swap.pass.cpp
libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/member_swap.pass.cpp
libcxx/test/std/containers/sequences/forwardlist/forwardlist.spec/non_member_swap.pass.cpp
libcxx/test/std/containers/sequences/vector.bool/swap.pass.cpp
libcxx/test/std/containers/sequences/vector/vector.special/swap.pass.cpp
libcxx/test/std/containers/unord/unord.map/swap_member.pass.cpp
libcxx/test/std/containers/unord/unord.map/unord.map.swap/swap_non_member.pass.cpp
libcxx/test/std/containers/unord/unord.multimap/swap_member.pass.cpp
libcxx/test/std/containers/unord/unord.multimap/unord.multimap.swap/swap_non_member.pass.cpp
libcxx/test/std/containers/unord/unord.multiset/swap_member.pass.cpp
libcxx/test/std/containers/unord/unord.multiset/unord.multiset.swap/swap_non_member.pass.cpp
libcxx/test/std/containers/unord/unord.set/swap_member.pass.cpp
libcxx/test/std/containers/unord/unord.set/unord.set.swap/swap_non_member.pass.cpp
libcxx/test/support/test_allocator.h