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-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 // Check that ranges algorithms aren't marked [[nodiscard]] when
10 // _LIBCPP_DISABLE_NODISCARD_EXT is defined
11
12 // UNSUPPORTED: c++03, c++11, c++14, c++17
13
14 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_NODISCARD_EXT
15
16 #include <algorithm>
17
test()18 void test() {
19 int range[1];
20 int* iter = range;
21 auto pred = [](auto...) { return true; };
22 std::ranges::adjacent_find(range);
23 std::ranges::adjacent_find(iter, iter);
24 std::ranges::all_of(range, pred);
25 std::ranges::all_of(iter, iter, pred);
26 std::ranges::any_of(range, pred);
27 std::ranges::any_of(iter, iter, pred);
28 std::ranges::binary_search(range, 1);
29 std::ranges::binary_search(iter, iter, 1);
30 std::ranges::clamp(1, 2, 3);
31 std::ranges::count_if(range, pred);
32 std::ranges::count_if(iter, iter, pred);
33 std::ranges::count(range, 1);
34 std::ranges::count(iter, iter, 1);
35 std::ranges::equal_range(range, 1);
36 std::ranges::equal_range(iter, iter, 1);
37 std::ranges::equal(range, range);
38 std::ranges::equal(iter, iter, iter, iter);
39 std::ranges::find_end(range, range);
40 std::ranges::find_end(iter, iter, iter, iter);
41 std::ranges::find_first_of(range, range);
42 std::ranges::find_first_of(iter, iter, iter, iter);
43 std::ranges::find_if_not(range, pred);
44 std::ranges::find_if_not(iter, iter, pred);
45 std::ranges::find_if(range, pred);
46 std::ranges::find_if(iter, iter, pred);
47 std::ranges::find(range, 1);
48 std::ranges::find(iter, iter, 1);
49 std::ranges::includes(range, range);
50 std::ranges::includes(iter, iter, iter, iter);
51 std::ranges::is_heap_until(range);
52 std::ranges::is_heap_until(iter, iter);
53 std::ranges::is_heap(range);
54 std::ranges::is_heap(iter, iter);
55 std::ranges::is_partitioned(range, pred);
56 std::ranges::is_partitioned(iter, iter, pred);
57 std::ranges::is_permutation(range, range);
58 std::ranges::is_permutation(iter, iter, iter, iter);
59 std::ranges::is_sorted_until(range);
60 std::ranges::is_sorted_until(iter, iter);
61 std::ranges::is_sorted(range);
62 std::ranges::is_sorted(iter, iter);
63 std::ranges::lexicographical_compare(range, range);
64 std::ranges::lexicographical_compare(iter, iter, iter, iter);
65 std::ranges::lower_bound(range, 1);
66 std::ranges::lower_bound(iter, iter, 1);
67 std::ranges::max_element(range);
68 std::ranges::max_element(iter, iter);
69 std::ranges::max(1, 2);
70 std::ranges::max({1, 2, 3});
71 std::ranges::max(range);
72 std::ranges::minmax_element(range);
73 std::ranges::minmax_element(iter, iter);
74 std::ranges::minmax(1, 2);
75 std::ranges::minmax({1, 2, 3});
76 std::ranges::minmax(range);
77 std::ranges::mismatch(range, range);
78 std::ranges::mismatch(iter, iter, iter, iter);
79 std::ranges::none_of(range, pred);
80 std::ranges::none_of(iter, iter, pred);
81 std::ranges::remove_if(range, pred);
82 std::ranges::remove_if(iter, iter, pred);
83 std::ranges::remove(range, 1);
84 std::ranges::remove(iter, iter, 1);
85 std::ranges::search_n(range, 1, 1);
86 std::ranges::search_n(iter, iter, 1, 1);
87 std::ranges::search(range, range);
88 std::ranges::search(iter, iter, iter, iter);
89 std::ranges::unique(range);
90 std::ranges::unique(iter, iter);
91 std::ranges::upper_bound(range, 1);
92 std::ranges::upper_bound(iter, iter, 1);
93 }
94