1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <forward_list> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// template <class T, class Allocator> 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// bool operator==(const forward_list<T, Allocator>& x, 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// const forward_list<T, Allocator>& y); 156046aced820aaab4f14f2026531dd11d10690691Howard Hinnant// 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// template <class T, class Allocator> 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// bool operator!=(const forward_list<T, Allocator>& x, 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// const forward_list<T, Allocator>& y); 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <forward_list> 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <iterator> 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <algorithm> 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert> 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 25061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h" 2681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant 2781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnanttemplate <class C> 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test(int N, int M) 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant typedef typename C::value_type T; 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant C c1; 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant for (int i = 0; i < N; ++i) 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant c1.push_front(i); 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant C c2; 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant for (int i = 0; i < M; ++i) 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant c2.push_front(i); 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant if (N == M) 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(c1 == c2); 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant else 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(c1 != c2); 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant c2 = c1; 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(c1 == c2); 43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant if (N > 0) 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant c2.front() = N+1; 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(c1 != c2); 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main() 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant for (int i = 0; i < 10; ++i) 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant for (int j = 0; j < 10; ++j) 5481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant test<std::forward_list<int> >(i, j); 5581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant#if __cplusplus >= 201103L 5681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant for (int i = 0; i < 10; ++i) 5781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant for (int j = 0; j < 10; ++j) 5881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant test<std::forward_list<int, min_allocator<int>> >(i, j); 5981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant#endif 60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 61