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