brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 00c1b89 Raw
72 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// template <class InputIterator, class Predicate>12//   bool13//   none_of(InputIterator first, InputIterator last, Predicate pred);14 15#include <algorithm>16#include <cassert>17 18#include "test_macros.h"19#include "test_iterators.h"20 21struct test122{23    TEST_CONSTEXPR bool operator()(const int& i) const24    {25        return i % 2 == 0;26    }27};28 29#if TEST_STD_VER > 1730TEST_CONSTEXPR bool test_constexpr() {31    int ia[] = {1, 3, 6, 7};32    int ib[] = {1, 3, 5, 7};33    return !std::none_of(std::begin(ia), std::end(ia), test1())34        &&  std::none_of(std::begin(ib), std::end(ib), test1())35        ;36    }37#endif38 39int main(int, char**)40{41    {42        int ia[] = {2, 4, 6, 8};43        const unsigned sa = sizeof(ia)/sizeof(ia[0]);44        assert(std::none_of(cpp17_input_iterator<const int*>(ia),45                            cpp17_input_iterator<const int*>(ia + sa), test1()) == false);46        assert(std::none_of(cpp17_input_iterator<const int*>(ia),47                            cpp17_input_iterator<const int*>(ia), test1()) == true);48    }49    {50        const int ia[] = {2, 4, 5, 8};51        const unsigned sa = sizeof(ia)/sizeof(ia[0]);52        assert(std::none_of(cpp17_input_iterator<const int*>(ia),53                            cpp17_input_iterator<const int*>(ia + sa), test1()) == false);54        assert(std::none_of(cpp17_input_iterator<const int*>(ia),55                            cpp17_input_iterator<const int*>(ia), test1()) == true);56    }57    {58        const int ia[] = {1, 3, 5, 7};59        const unsigned sa = sizeof(ia)/sizeof(ia[0]);60        assert(std::none_of(cpp17_input_iterator<const int*>(ia),61                            cpp17_input_iterator<const int*>(ia + sa), test1()) == true);62        assert(std::none_of(cpp17_input_iterator<const int*>(ia),63                            cpp17_input_iterator<const int*>(ia), test1()) == true);64    }65 66#if TEST_STD_VER > 1767    static_assert(test_constexpr());68#endif69 70  return 0;71}72