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(deque&&)
1393f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant//        noexcept(is_nothrow_move_constructible<allocator_type>::value);
1493f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant
1593f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant// This tests a conforming extension
1693f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant
1793f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant#include <deque>
1893f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant#include <cassert>
1993f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant
2093f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant#include "../../../MoveOnly.h"
211b92188a82b01e76ac6e8ad5f997293c2a078adcMarshall Clow#include "test_allocator.h"
2293f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant
2393f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnanttemplate <class T>
2493f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnantstruct some_alloc
2593f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant{
2693f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant    typedef T value_type;
2793f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant    some_alloc(const some_alloc&);
2893f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant};
2993f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant
3093f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnantint main()
3193f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant{
3293f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant#if __has_feature(cxx_noexcept)
3393f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant    {
3493f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant        typedef std::deque<MoveOnly> C;
3593f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant        static_assert(std::is_nothrow_move_constructible<C>::value, "");
3693f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant    }
3793f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant    {
3893f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant        typedef std::deque<MoveOnly, test_allocator<MoveOnly>> C;
3993f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant        static_assert(std::is_nothrow_move_constructible<C>::value, "");
4093f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant    }
4193f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant    {
4293f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant        typedef std::deque<MoveOnly, other_allocator<MoveOnly>> C;
4393f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant        static_assert(std::is_nothrow_move_constructible<C>::value, "");
4493f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant    }
4593f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant    {
4693f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant        typedef std::deque<MoveOnly, some_alloc<MoveOnly>> C;
4793f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant        static_assert(!std::is_nothrow_move_constructible<C>::value, "");
4893f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant    }
4993f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant#endif
5093f2764b165fdcf62f4424d919d4713c9d2dbab6Howard Hinnant}
51