STL_MSFT created this revision.
STL_MSFT added reviewers: EricWF, mclow.lists.
STL_MSFT added a subscriber: cfe-commits.

Make move_noexcept.pass.cpp tests more portable.

They were static_asserting that the following things are 
nothrow-move-constructible:

ordered/unordered associative containers
deque
forward_list
list
vector<bool>

The Standard doesn't mark these things as having noexcept move constructors, so 
the static_asserts should be marked as libc++ specific.

Additionally, two container adaptors were affected:

queue
stack

They're depicted in the Standard as having implicitly defined move ctors. These 
tests are using the default backing container, deque, so these static_asserts 
also need to be changed.

http://reviews.llvm.org/D21716

Files:
  test/std/containers/associative/map/map.cons/move_noexcept.pass.cpp
  test/std/containers/associative/multimap/multimap.cons/move_noexcept.pass.cpp
  test/std/containers/associative/multiset/multiset.cons/move_noexcept.pass.cpp
  test/std/containers/associative/set/set.cons/move_noexcept.pass.cpp
  test/std/containers/container.adaptors/queue/queue.cons/move_noexcept.pass.cpp
  test/std/containers/container.adaptors/stack/stack.cons/move_noexcept.pass.cpp
  test/std/containers/sequences/deque/deque.cons/move_noexcept.pass.cpp
  
test/std/containers/sequences/forwardlist/forwardlist.cons/move_noexcept.pass.cpp
  test/std/containers/sequences/list/list.cons/move_noexcept.pass.cpp
  test/std/containers/sequences/vector.bool/move_noexcept.pass.cpp
  test/std/containers/unord/unord.map/unord.map.cnstr/move_noexcept.pass.cpp
  
test/std/containers/unord/unord.multimap/unord.multimap.cnstr/move_noexcept.pass.cpp
  
test/std/containers/unord/unord.multiset/unord.multiset.cnstr/move_noexcept.pass.cpp
  test/std/containers/unord/unord.set/unord.set.cnstr/move_noexcept.pass.cpp

Index: test/std/containers/unord/unord.set/unord.set.cnstr/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/unord/unord.set/unord.set.cnstr/move_noexcept.pass.cpp
+++ test/std/containers/unord/unord.set/unord.set.cnstr/move_noexcept.pass.cpp
@@ -43,17 +43,17 @@
 {
     {
         typedef std::unordered_set<MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_set<MoveOnly, std::hash<MoveOnly>,
                            std::equal_to<MoveOnly>, test_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_set<MoveOnly, std::hash<MoveOnly>,
                           std::equal_to<MoveOnly>, other_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_set<MoveOnly, some_hash<MoveOnly>> C;
Index: test/std/containers/unord/unord.multiset/unord.multiset.cnstr/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/unord/unord.multiset/unord.multiset.cnstr/move_noexcept.pass.cpp
+++ test/std/containers/unord/unord.multiset/unord.multiset.cnstr/move_noexcept.pass.cpp
@@ -43,17 +43,17 @@
 {
     {
         typedef std::unordered_multiset<MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_multiset<MoveOnly, std::hash<MoveOnly>,
                            std::equal_to<MoveOnly>, test_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_multiset<MoveOnly, std::hash<MoveOnly>,
                           std::equal_to<MoveOnly>, other_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_multiset<MoveOnly, some_hash<MoveOnly>> C;
Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/move_noexcept.pass.cpp
+++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/move_noexcept.pass.cpp
@@ -43,17 +43,17 @@
 {
     {
         typedef std::unordered_multimap<MoveOnly, MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_multimap<MoveOnly, MoveOnly, std::hash<MoveOnly>,
                            std::equal_to<MoveOnly>, test_allocator<std::pair<const MoveOnly, MoveOnly>>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_multimap<MoveOnly, MoveOnly, std::hash<MoveOnly>,
                           std::equal_to<MoveOnly>, other_allocator<std::pair<const MoveOnly, MoveOnly>>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_multimap<MoveOnly, MoveOnly, some_hash<MoveOnly>> C;
Index: test/std/containers/unord/unord.map/unord.map.cnstr/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/unord/unord.map/unord.map.cnstr/move_noexcept.pass.cpp
+++ test/std/containers/unord/unord.map/unord.map.cnstr/move_noexcept.pass.cpp
@@ -43,17 +43,17 @@
 {
     {
         typedef std::unordered_map<MoveOnly, MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_map<MoveOnly, MoveOnly, std::hash<MoveOnly>,
                            std::equal_to<MoveOnly>, test_allocator<std::pair<const MoveOnly, MoveOnly>>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_map<MoveOnly, MoveOnly, std::hash<MoveOnly>,
                           std::equal_to<MoveOnly>, other_allocator<std::pair<const MoveOnly, MoveOnly>>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::unordered_map<MoveOnly, MoveOnly, some_hash<MoveOnly>> C;
Index: test/std/containers/sequences/vector.bool/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/sequences/vector.bool/move_noexcept.pass.cpp
+++ test/std/containers/sequences/vector.bool/move_noexcept.pass.cpp
@@ -32,21 +32,21 @@
 {
     {
         typedef std::vector<bool> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::vector<bool, test_allocator<bool>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::vector<bool, other_allocator<bool>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::vector<bool, some_alloc<bool>> C;
     //  In C++17, move constructors for allocators are not allowed to throw
 #if TEST_STD_VER > 14
-        static_assert( std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT( std::is_nothrow_move_constructible<C>::value, "");
 #else
         static_assert(!std::is_nothrow_move_constructible<C>::value, "");
 #endif
Index: test/std/containers/sequences/list/list.cons/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/sequences/list/list.cons/move_noexcept.pass.cpp
+++ test/std/containers/sequences/list/list.cons/move_noexcept.pass.cpp
@@ -33,15 +33,15 @@
 {
     {
         typedef std::list<MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::list<MoveOnly, test_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::list<MoveOnly, other_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::list<MoveOnly, some_alloc<MoveOnly>> C;
Index: test/std/containers/sequences/forwardlist/forwardlist.cons/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/sequences/forwardlist/forwardlist.cons/move_noexcept.pass.cpp
+++ test/std/containers/sequences/forwardlist/forwardlist.cons/move_noexcept.pass.cpp
@@ -33,15 +33,15 @@
 {
     {
         typedef std::forward_list<MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::forward_list<MoveOnly, test_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::forward_list<MoveOnly, other_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::forward_list<MoveOnly, some_alloc<MoveOnly>> C;
Index: test/std/containers/sequences/deque/deque.cons/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/sequences/deque/deque.cons/move_noexcept.pass.cpp
+++ test/std/containers/sequences/deque/deque.cons/move_noexcept.pass.cpp
@@ -33,15 +33,15 @@
 {
     {
         typedef std::deque<MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::deque<MoveOnly, test_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::deque<MoveOnly, other_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::deque<MoveOnly, some_alloc<MoveOnly>> C;
Index: test/std/containers/container.adaptors/stack/stack.cons/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/container.adaptors/stack/stack.cons/move_noexcept.pass.cpp
+++ test/std/containers/container.adaptors/stack/stack.cons/move_noexcept.pass.cpp
@@ -25,6 +25,6 @@
 {
     {
         typedef std::stack<MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
 }
Index: test/std/containers/container.adaptors/queue/queue.cons/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/container.adaptors/queue/queue.cons/move_noexcept.pass.cpp
+++ test/std/containers/container.adaptors/queue/queue.cons/move_noexcept.pass.cpp
@@ -25,6 +25,6 @@
 {
     {
         typedef std::queue<MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
 }
Index: test/std/containers/associative/set/set.cons/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/associative/set/set.cons/move_noexcept.pass.cpp
+++ test/std/containers/associative/set/set.cons/move_noexcept.pass.cpp
@@ -35,15 +35,15 @@
 {
     {
         typedef std::set<MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::set<MoveOnly, std::less<MoveOnly>, test_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::set<MoveOnly, std::less<MoveOnly>, other_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::set<MoveOnly, some_comp<MoveOnly>> C;
Index: test/std/containers/associative/multiset/multiset.cons/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/associative/multiset/multiset.cons/move_noexcept.pass.cpp
+++ test/std/containers/associative/multiset/multiset.cons/move_noexcept.pass.cpp
@@ -35,15 +35,15 @@
 {
     {
         typedef std::multiset<MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::multiset<MoveOnly, std::less<MoveOnly>, test_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::multiset<MoveOnly, std::less<MoveOnly>, other_allocator<MoveOnly>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::multiset<MoveOnly, some_comp<MoveOnly>> C;
Index: test/std/containers/associative/multimap/multimap.cons/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/associative/multimap/multimap.cons/move_noexcept.pass.cpp
+++ test/std/containers/associative/multimap/multimap.cons/move_noexcept.pass.cpp
@@ -36,15 +36,15 @@
     typedef std::pair<const MoveOnly, MoveOnly> V;
     {
         typedef std::multimap<MoveOnly, MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::multimap<MoveOnly, MoveOnly, std::less<MoveOnly>, test_allocator<V>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::multimap<MoveOnly, MoveOnly, std::less<MoveOnly>, other_allocator<V>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::multimap<MoveOnly, MoveOnly, some_comp<MoveOnly>> C;
Index: test/std/containers/associative/map/map.cons/move_noexcept.pass.cpp
===================================================================
--- test/std/containers/associative/map/map.cons/move_noexcept.pass.cpp
+++ test/std/containers/associative/map/map.cons/move_noexcept.pass.cpp
@@ -36,15 +36,15 @@
     typedef std::pair<const MoveOnly, MoveOnly> V;
     {
         typedef std::map<MoveOnly, MoveOnly> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::map<MoveOnly, MoveOnly, std::less<MoveOnly>, test_allocator<V>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::map<MoveOnly, MoveOnly, std::less<MoveOnly>, other_allocator<V>> C;
-        static_assert(std::is_nothrow_move_constructible<C>::value, "");
+        LIBCPP_STATIC_ASSERT(std::is_nothrow_move_constructible<C>::value, "");
     }
     {
         typedef std::map<MoveOnly, MoveOnly, some_comp<MoveOnly>> C;
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to