brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · e7c32d2 Raw
137 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: c++03, c++11, c++14, c++1710 11// <algorithm>12//13// Algorithms that take predicates should support predicates that return a non-boolean value as long as the14// returned type is implicitly convertible to bool.15 16#include <algorithm>17 18#include <initializer_list>19 20#include "boolean_testable.h"21 22using Value    = StrictComparable<int>;23using Iterator = StrictBooleanIterator<Value*>;24auto pred1     = StrictUnaryPredicate;25auto pred2     = StrictBinaryPredicate;26 27void f(Iterator it, Iterator out, std::size_t n, Value const& val, std::initializer_list<Value> ilist) {28  (void)std::any_of(it, it, pred1);29  (void)std::all_of(it, it, pred1);30  (void)std::none_of(it, it, pred1);31  (void)std::find_if(it, it, pred1);32  (void)std::find_if_not(it, it, pred1);33  (void)std::find_first_of(it, it, it, it);34  (void)std::find_first_of(it, it, it, it, pred2);35  (void)std::adjacent_find(it, it);36  (void)std::adjacent_find(it, it, pred2);37  (void)std::mismatch(it, it, it, it);38  (void)std::mismatch(it, it, it, it, pred2);39  (void)std::mismatch(it, it, it);40  (void)std::mismatch(it, it, it);41  (void)std::mismatch(it, it, it, pred2);42  (void)std::equal(it, it, it, it);43  (void)std::equal(it, it, it, it, pred2);44  (void)std::equal(it, it, it);45  (void)std::equal(it, it, it, pred2);46  (void)std::lexicographical_compare(it, it, it, it);47  (void)std::lexicographical_compare(it, it, it, it, pred2);48  (void)std::partition_point(it, it, pred1);49  (void)std::lower_bound(it, it, val);50  (void)std::lower_bound(it, it, val, pred2);51  (void)std::upper_bound(it, it, val);52  (void)std::upper_bound(it, it, val, pred2);53  (void)std::equal_range(it, it, val);54  (void)std::equal_range(it, it, val, pred2);55  (void)std::binary_search(it, it, val);56  (void)std::binary_search(it, it, val, pred2);57  (void)std::min(val, val);58  (void)std::min(val, val, pred2);59  (void)std::min(ilist);60  (void)std::min(ilist, pred2);61  (void)std::max(val, val);62  (void)std::max(val, val, pred2);63  (void)std::max(ilist);64  (void)std::max(ilist, pred2);65  (void)std::minmax(val, val);66  (void)std::minmax(val, val, pred2);67  (void)std::minmax(ilist);68  (void)std::minmax(ilist, pred2);69  (void)std::min_element(it, it);70  (void)std::min_element(it, it, pred2);71  (void)std::max_element(it, it);72  (void)std::max_element(it, it, pred2);73  (void)std::minmax_element(it, it);74  (void)std::minmax_element(it, it, pred2);75  (void)std::count_if(it, it, pred1);76  (void)std::search(it, it, it, it);77  (void)std::search(it, it, it, it, pred2);78  (void)std::search_n(it, it, n, val);79  (void)std::search_n(it, it, n, val, pred2);80  (void)std::is_partitioned(it, it, pred1);81  (void)std::is_sorted(it, it);82  (void)std::is_sorted(it, it, pred2);83  (void)std::is_sorted_until(it, it);84  (void)std::is_sorted_until(it, it, pred2);85  (void)std::is_heap(it, it);86  (void)std::is_heap(it, it, pred2);87  (void)std::is_heap_until(it, it);88  (void)std::is_heap_until(it, it, pred2);89  (void)std::clamp(val, val, val);90  (void)std::clamp(val, val, val, pred2);91  (void)std::is_permutation(it, it, it, it);92  (void)std::is_permutation(it, it, it, it, pred2);93  (void)std::copy_if(it, it, out, pred1);94  (void)std::remove_copy_if(it, it, out, pred1);95  (void)std::remove_copy(it, it, out, val);96  (void)std::replace(it, it, val, val);97  (void)std::replace_if(it, it, pred1, val);98  (void)std::replace_copy_if(it, it, out, pred1, val);99  (void)std::replace_copy(it, it, out, val, val);100  (void)std::unique_copy(it, it, out, pred2);101  (void)std::partition_copy(it, it, out, out, pred1);102  (void)std::partial_sort_copy(it, it, it, it, pred2);103  (void)std::merge(it, it, it, it, out);104  (void)std::merge(it, it, it, it, out, pred2);105  (void)std::set_difference(it, it, it, it, out, pred2);106  (void)std::set_intersection(it, it, it, it, out, pred2);107  (void)std::set_symmetric_difference(it, it, it, it, out, pred2);108  (void)std::set_union(it, it, it, it, out, pred2);109  (void)std::remove_if(it, it, pred1);110  (void)std::remove(it, it, val);111  (void)std::unique(it, it, pred2);112  (void)std::partition(it, it, pred1);113  (void)std::stable_partition(it, it, pred1);114  (void)std::sort(it, it);115  (void)std::sort(it, it, pred2);116  (void)std::stable_sort(it, it);117  (void)std::stable_sort(it, it, pred2);118  (void)std::partial_sort(it, it, it);119  (void)std::partial_sort(it, it, it, pred2);120  (void)std::nth_element(it, it, it);121  (void)std::nth_element(it, it, it, pred2);122  (void)std::inplace_merge(it, it, it);123  (void)std::inplace_merge(it, it, it, pred2);124  (void)std::make_heap(it, it);125  (void)std::make_heap(it, it, pred2);126  (void)std::push_heap(it, it);127  (void)std::push_heap(it, it, pred2);128  (void)std::pop_heap(it, it);129  (void)std::pop_heap(it, it, pred2);130  (void)std::sort_heap(it, it);131  (void)std::sort_heap(it, it, pred2);132  (void)std::prev_permutation(it, it);133  (void)std::prev_permutation(it, it, pred2);134  (void)std::next_permutation(it, it);135  (void)std::next_permutation(it, it, pred2);136}137