1b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant//===----------------------------------------------------------------------===//
2b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant//
3b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant//                     The LLVM Compiler Infrastructure
4b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant//
5b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant// Source Licenses. See LICENSE.TXT for details.
7b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant//
8b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant//===----------------------------------------------------------------------===//
9b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant
10b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant// <forward_list>
11b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant
12b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant// ~forward_list() // implied noexcept;
13b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant
14b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant#include <forward_list>
15b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant#include <cassert>
16b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant
17b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant#include "../../../MoveOnly.h"
181b92188a82b01e76ac6e8ad5f997293c2a078adcMarshall Clow#include "test_allocator.h"
19b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant
20b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant#if __has_feature(cxx_noexcept)
21b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant
22b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnanttemplate <class T>
23b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnantstruct some_alloc
24b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant{
25b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant    typedef T value_type;
26b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant    some_alloc(const some_alloc&);
27b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant    ~some_alloc() noexcept(false);
28b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant};
29b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant
30b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant#endif
31b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant
32b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnantint main()
33b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant{
34b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant#if __has_feature(cxx_noexcept)
35b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant    {
36b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant        typedef std::forward_list<MoveOnly> C;
37b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant        static_assert(std::is_nothrow_destructible<C>::value, "");
38b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant    }
39b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant    {
40b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant        typedef std::forward_list<MoveOnly, test_allocator<MoveOnly>> C;
41b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant        static_assert(std::is_nothrow_destructible<C>::value, "");
42b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant    }
43b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant    {
44b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant        typedef std::forward_list<MoveOnly, other_allocator<MoveOnly>> C;
45b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant        static_assert(std::is_nothrow_destructible<C>::value, "");
46b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant    }
47b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant    {
48b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant        typedef std::forward_list<MoveOnly, some_alloc<MoveOnly>> C;
49b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant        static_assert(!std::is_nothrow_destructible<C>::value, "");
50b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant    }
51b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant#endif
52b965fed10bc47c74ed491717af082ecf5c8b815bHoward Hinnant}
53