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