64 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// constexpr bool // constexpr after C++1713// all_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[] = {2, 4, 6, 8};32 int ib[] = {2, 4, 5, 8};33 return std::all_of(std::begin(ia), std::end(ia), test1())34 && !std::all_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::all_of(cpp17_input_iterator<const int*>(ia),45 cpp17_input_iterator<const int*>(ia + sa), test1()) == true);46 assert(std::all_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::all_of(cpp17_input_iterator<const int*>(ia),53 cpp17_input_iterator<const int*>(ia + sa), test1()) == false);54 assert(std::all_of(cpp17_input_iterator<const int*>(ia),55 cpp17_input_iterator<const int*>(ia), test1()) == true);56 }57 58#if TEST_STD_VER > 1759 static_assert(test_constexpr());60#endif61 62 return 0;63}64