dtor_noexcept.pass.cpp revision d24c465beaec2fe9a0e365e6379cd5d3acaeb2ca
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 19df00d5e5ad672aa275a29c5a446072959134adddMarshall Clow#include "MoveOnly.h" 201b92188a82b01e76ac6e8ad5f997293c2a078adcMarshall Clow#include "test_allocator.h" 21d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant 22d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnanttemplate <class T> 23d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnantstruct some_alloc 24d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant{ 25d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant typedef T value_type; 26d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant some_alloc(const some_alloc&); 27d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant ~some_alloc() noexcept(false); 28d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant}; 29d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant 30d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnantint main() 31d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant{ 32d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant { 33d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant typedef std::vector<MoveOnly> C; 34d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant static_assert(std::is_nothrow_destructible<C>::value, ""); 35d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant } 36d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant { 37d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant typedef std::vector<MoveOnly, test_allocator<MoveOnly>> C; 38d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant static_assert(std::is_nothrow_destructible<C>::value, ""); 39d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant } 40d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant { 41d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant typedef std::vector<MoveOnly, other_allocator<MoveOnly>> C; 42d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant static_assert(std::is_nothrow_destructible<C>::value, ""); 43d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant } 44d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant { 45d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant typedef std::vector<MoveOnly, some_alloc<MoveOnly>> C; 46d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant static_assert(!std::is_nothrow_destructible<C>::value, ""); 47d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant } 48d1d27a4afaba2e3b708afd73f1533b7f8530008bHoward Hinnant} 49