// -*- C++ -*- //===-- transform_reduce.pass.cpp -----------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11, c++14 #include "support/pstl_test_config.h" #include <execution> #include <numeric> #include "support/utils.h" usingnamespaceTestUtils; // Functor for xor-operation for modeling binary operations in inner_product class XOR { … }; // Model of User-defined class class MyClass { … }; template <typename T> void CheckResults(const T& expected, const T& in) { … } // We need to check correctness only for "int" (for example) except cases // if we have "floating-point type"-specialization void CheckResults(const float32_t&, const float32_t&) { … } // Test for different types and operations with different iterators struct test_transform_reduce { … }; template <typename T, typename BinaryOperation1, typename BinaryOperation2, typename UnaryOp, typename Initializer> void test_by_type(T init, BinaryOperation1 opB1, BinaryOperation2 opB2, UnaryOp opU, Initializer initObj) { … } int main() { … }