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