//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // deque& operator=(deque&& c) // noexcept( // allocator_type::propagate_on_container_move_assignment::value && // is_nothrow_move_assignable::value); // This tests a conforming extension // UNSUPPORTED: c++03 #include #include "test_macros.h" #include "MoveOnly.h" #include "test_allocator.h" template struct always_equal_alloc { using value_type = T; always_equal_alloc(const always_equal_alloc&); void allocate(std::size_t); }; template struct not_always_equal_alloc { int i; using value_type = T; not_always_equal_alloc(const not_always_equal_alloc&); void allocate(std::size_t); }; static_assert(std::is_nothrow_move_assignable>::value, ""); static_assert(!std::is_nothrow_move_assignable>>::value, ""); #if TEST_STD_VER >= 17 static_assert(std::is_nothrow_move_assignable>>::value, ""); #endif static_assert(!std::is_nothrow_move_assignable>>::value, ""); #if defined(_LIBCPP_VERSION) static_assert(std::is_nothrow_move_assignable>>::value, ""); #endif // _LIBCPP_VERSION