1b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 2b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 3b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// The LLVM Compiler Infrastructure 4b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 5b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// This file is dual licensed under the MIT and the University of Illinois Open 6b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// Source Licenses. See LICENSE.TXT for details. 7b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 8b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 9b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 10b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// <list> 11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// template <class Compare> void merge(list& x, Compare comp); 13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <list> 15b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <functional> 16b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <cassert> 17b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 18ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner#include "../../../min_allocator.h" 19ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 20b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint main() 21b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 22ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 23b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner int a1[] = {10, 9, 7, 3, 1}; 24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner int a2[] = {11, 8, 6, 5, 4, 2, 0}; 25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner int a3[] = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; 26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner std::list<int> c1(a1, a1+sizeof(a1)/sizeof(a1[0])); 27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner std::list<int> c2(a2, a2+sizeof(a2)/sizeof(a2[0])); 28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner c1.merge(c2, std::greater<int>()); 29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(c1 == std::list<int>(a3, a3+sizeof(a3)/sizeof(a3[0]))); 30ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner } 31ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner#if __cplusplus >= 201103L 32ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 33ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner int a1[] = {10, 9, 7, 3, 1}; 34ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner int a2[] = {11, 8, 6, 5, 4, 2, 0}; 35ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner int a3[] = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; 36ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner std::list<int, min_allocator<int>> c1(a1, a1+sizeof(a1)/sizeof(a1[0])); 37ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner std::list<int, min_allocator<int>> c2(a2, a2+sizeof(a2)/sizeof(a2[0])); 38ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner c1.merge(c2, std::greater<int>()); 39ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert((c1 == std::list<int, min_allocator<int>>(a3, a3+sizeof(a3)/sizeof(a3[0])))); 40ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner } 41ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner#endif 42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 43