193f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant//===----------------------------------------------------------------------===// 293f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// 393f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// The LLVM Compiler Infrastructure 493f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// 593f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 693f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 793f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// 893f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant//===----------------------------------------------------------------------===// 993f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant 1093f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// <deque> 1193f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant 1293f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// deque& operator=(deque&& c) 1393f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// noexcept( 1493f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// allocator_type::propagate_on_container_move_assignment::value && 1593f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// is_nothrow_move_assignable<allocator_type>::value); 1693f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant 1793f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// This tests a conforming extension 1893f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant 1993f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant#include <deque> 2093f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant#include <cassert> 2193f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant 2293f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant#include "../../../MoveOnly.h" 231b92188a82b01e76ac6e8ad5f997293c2a078adcMarshall Clow#include "test_allocator.h" 2493f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant 2593f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnanttemplate <class T> 2693f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnantstruct some_alloc 2793f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant{ 2893f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant typedef T value_type; 2993f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant some_alloc(const some_alloc&); 3093f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant}; 3193f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant 3293f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnantint main() 3393f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant{ 3493f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant#if __has_feature(cxx_noexcept) 3593f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant { 3693f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant typedef std::deque<MoveOnly> C; 3793f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant static_assert(std::is_nothrow_move_assignable<C>::value, ""); 3893f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant } 3993f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant { 4093f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant typedef std::deque<MoveOnly, test_allocator<MoveOnly>> C; 4193f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant static_assert(!std::is_nothrow_move_assignable<C>::value, ""); 4293f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant } 4393f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant { 4493f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant typedef std::deque<MoveOnly, other_allocator<MoveOnly>> C; 4593f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant static_assert(std::is_nothrow_move_assignable<C>::value, ""); 4693f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant } 4793f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant { 4893f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant typedef std::deque<MoveOnly, some_alloc<MoveOnly>> C; 4993f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant static_assert(!std::is_nothrow_move_assignable<C>::value, ""); 5093f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant } 5193f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant#endif 5293f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant} 53