brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 24feab7 Raw
48 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// <algorithm>10 11#include <algorithm>12#include <functional>13 14#include "test_macros.h"15 16struct A {17    int i = 0;18    TEST_CONSTEXPR bool operator<(const A& rhs) const { return i < rhs.i; }19    static TEST_CONSTEXPR bool isEven(const A& a) { return a.i % 2 == 0; }20};21 22void *operator new(std::size_t, A*) = delete;23 24TEST_CONSTEXPR_CXX20 bool test() {25  A a[4] = {};26  std::sort(a, a + 4);27  std::sort(a, a + 4, std::less<A>());28  std::partition(a, a + 4, A::isEven);29  if (TEST_STD_AT_LEAST_26_OR_RUNTIME_EVALUATED) {30    std::stable_sort(a, a + 4);31    std::stable_sort(a, a + 4, std::less<A>());32    std::stable_partition(a, a + 4, A::isEven);33    std::inplace_merge(a, a + 2, a + 4);34    std::inplace_merge(a, a + 2, a + 4, std::less<A>());35  }36 37  return true;38}39 40int main(int, char**) {41  test();42#if TEST_STD_VER >= 2043  static_assert(test());44#endif45 46  return 0;47}48