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