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// <algorithm>
10
11#include <algorithm>
12#include <functional>
13
14#include "test_macros.h"
15
16struct A {
17 int i = 0;
18 bool operator<(const A& rhs) const { return i < rhs.i; }
19 static bool isEven(const A& a) { return a.i % 2 == 0; }
20};
21
22void *operator new(std::size_t, A*) = delete;
23
24int main(int, char**)
25{
26 A a[4] = {};
27 std::sort(first: a, last: a+4);
28 std::sort(first: a, last: a+4, comp: std::less<A>());
29 std::partition(first: a, last: a+4, pred: A::isEven);
30 std::stable_sort(first: a, last: a+4);
31 std::stable_sort(first: a, last: a+4, comp: std::less<A>());
32 std::stable_partition(first: a, last: a+4, pred: A::isEven);
33 std::inplace_merge(first: a, middle: a+2, last: a+4);
34 std::inplace_merge(first: a, middle: a+2, last: a+4, comp: std::less<A>());
35
36 return 0;
37}
38

source code of libcxx/test/std/algorithms/robust_against_adl_on_new.pass.cpp