1d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant//===----------------------------------------------------------------------===//
2d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant//
3d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant//                     The LLVM Compiler Infrastructure
4d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant//
5d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant// Source Licenses. See LICENSE.TXT for details.
7d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant//
8d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant//===----------------------------------------------------------------------===//
9d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant
10d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant// <vector>
11d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant
12d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant// ~vector() // implied noexcept;
13d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant
14d24c465beaec2fe9a0e365e6379cd5d3acaeb2caEric Fiselier// UNSUPPORTED: c++98, c++03
15d24c465beaec2fe9a0e365e6379cd5d3acaeb2caEric Fiselier
16d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant#include <vector>
17d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant#include <cassert>
18d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant
19775417d97c68d7cba739f8f7bcfa308d0ddec670Eric Fiselier#include "test_macros.h"
20df00d5e5ad672aa275a29c5a446072959134adddMarshall Clow#include "MoveOnly.h"
211b92188a82b01e76ac6e8ad5f997293c2a078adcMarshall Clow#include "test_allocator.h"
22d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant
23d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnanttemplate <class T>
24d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnantstruct some_alloc
25d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant{
26d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant    typedef T value_type;
27d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant    some_alloc(const some_alloc&);
28d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant    ~some_alloc() noexcept(false);
29d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant};
30d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant
31d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnantint main()
32d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant{
33d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant    {
34d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant        typedef std::vector<MoveOnly> C;
35d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant        static_assert(std::is_nothrow_destructible<C>::value, "");
36d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant    }
37d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant    {
38d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant        typedef std::vector<MoveOnly, test_allocator<MoveOnly>> C;
39d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant        static_assert(std::is_nothrow_destructible<C>::value, "");
40d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant    }
41d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant    {
42d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant        typedef std::vector<MoveOnly, other_allocator<MoveOnly>> C;
43d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant        static_assert(std::is_nothrow_destructible<C>::value, "");
44d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant    }
455597800045d2053774514354adf7fbd8bd36cc3dStephan T. Lavavej#if defined(_LIBCPP_VERSION)
46d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant    {
47d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant        typedef std::vector<MoveOnly, some_alloc<MoveOnly>> C;
485597800045d2053774514354adf7fbd8bd36cc3dStephan T. Lavavej        static_assert(!std::is_nothrow_destructible<C>::value, "");
49d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant    }
505597800045d2053774514354adf7fbd8bd36cc3dStephan T. Lavavej#endif // _LIBCPP_VERSION
51d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant}
52