From 96e557fe09c3254708fbc5915e8459a18e164d6e Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Wed, 22 Mar 2023 17:07:51 -0600 Subject: [PATCH] Fix a couple of C++20 concepts in parallel.h. --- include/deal.II/base/parallel.h | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/include/deal.II/base/parallel.h b/include/deal.II/base/parallel.h index 4da420b7eb..6ac43510e3 100644 --- a/include/deal.II/base/parallel.h +++ b/include/deal.II/base/parallel.h @@ -134,9 +134,11 @@ namespace parallel */ template DEAL_II_CXX20_REQUIRES( - (std::invocable && - std::assignable_from()), - std::invoke_result_t>)) + (std::invocable())> && + std::assignable_from< + decltype(*std::declval()), + std::invoke_result_t())>>)) void transform(const InputIterator &begin_in, const InputIterator &end_in, OutputIterator out, @@ -196,10 +198,14 @@ namespace parallel typename OutputIterator, typename Function> DEAL_II_CXX20_REQUIRES( - (std::invocable && + (std::invocable()), + decltype(*std::declval())> && std::assignable_from< decltype(*std::declval()), - std::invoke_result_t>)) + std::invoke_result_t()), + decltype(*std::declval())>>)) void transform(const InputIterator1 &begin_in1, const InputIterator1 &end_in1, InputIterator2 in2, @@ -262,12 +268,16 @@ namespace parallel typename OutputIterator, typename Function> DEAL_II_CXX20_REQUIRES( - (std::invocable && - std::assignable_from()), - std::invoke_result_t>)) + (std::invocable()), + decltype(*std::declval()), + decltype(*std::declval())> && + std::assignable_from< + decltype(*std::declval()), + std::invoke_result_t()), + decltype(*std::declval()), + decltype(*std::declval())>>)) void transform(const InputIterator1 &begin_in1, const InputIterator1 &end_in1, InputIterator2 in2, -- 2.39.5