16dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant//===----------------------------------------------------------------------===// 26dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant// 36dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant// The LLVM Compiler Infrastructure 46dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant// 56dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 66dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 76dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant// 86dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant//===----------------------------------------------------------------------===// 96dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant 106dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant// <list> 116dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant 126dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant// template <class T, class Alloc> 136dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant// void swap(list<T,Alloc>& x, list<T,Alloc>& y); 146dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant 155e57142c5902c3f73a6fdcb8cab55e88ffb43a56Howard Hinnant#if _LIBCPP_DEBUG >= 1 166dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) 176dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant#endif 186dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant 196dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant#include <list> 206dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant#include <cassert> 216dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant 226dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant#include <__debug> 23061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h" 246dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant 256dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnantint main() 266dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant{ 275e57142c5902c3f73a6fdcb8cab55e88ffb43a56Howard Hinnant#if _LIBCPP_DEBUG >= 1 286dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant { 296dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant int a1[] = {1, 3, 7, 9, 10}; 306dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant int a2[] = {0, 2, 4, 5, 6, 8, 11}; 316dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant std::list<int> c1(a1, a1+sizeof(a1)/sizeof(a1[0])); 326dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant std::list<int> c2(a2, a2+sizeof(a2)/sizeof(a2[0])); 336dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant std::list<int>::iterator i1 = c1.begin(); 346dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant std::list<int>::iterator i2 = c2.begin(); 356dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant swap(c1, c2); 366dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant c1.erase(i2); 376dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant c2.erase(i1); 386dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant std::list<int>::iterator j = i1; 396dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant c1.erase(i1); 406dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant assert(false); 416dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant } 4229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant#if __cplusplus >= 201103L 4329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 4429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant int a1[] = {1, 3, 7, 9, 10}; 4529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant int a2[] = {0, 2, 4, 5, 6, 8, 11}; 4629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> c1(a1, a1+sizeof(a1)/sizeof(a1[0])); 4729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> c2(a2, a2+sizeof(a2)/sizeof(a2[0])); 4829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::iterator i1 = c1.begin(); 4929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::iterator i2 = c2.begin(); 5029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant swap(c1, c2); 5129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant c1.erase(i2); 5229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant c2.erase(i1); 5329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::iterator j = i1; 5429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant c1.erase(i1); 5529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(false); 5629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 5729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant#endif 586dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant#endif 596dcaf3ee1a1d97ce320d87df842848c5846c2564Howard Hinnant} 60