From 0191ae41cfcfd76d8a76526b29cf8854fc1f269f Mon Sep 17 00:00:00 2001 From: alemuntoni Date: Wed, 13 May 2026 16:41:25 +0200 Subject: [PATCH] Add is_execution_policy trait and is_execution_policy_v variable for policies --- include/poolstl/execution | 19 +++++++++++++++++++ include/poolstl/poolstl.hpp | 5 +++++ 2 files changed, 24 insertions(+) diff --git a/include/poolstl/execution b/include/poolstl/execution index db5f6cd..466ab20 100644 --- a/include/poolstl/execution +++ b/include/poolstl/execution @@ -196,6 +196,25 @@ namespace poolstl { using is_pure_threads_policy = std::is_same::type>::type>; } + + /** + * Test whether a type is a poolSTL execution policy. + * Mirrors C++17's std::is_execution_policy for poolSTL policies. + */ + template + struct is_execution_policy : std::false_type {}; + + template <> + struct is_execution_policy : std::true_type {}; + + template <> + struct is_execution_policy : std::true_type {}; + + template <> + struct is_execution_policy : std::true_type {}; + + template + constexpr bool is_execution_policy_v = is_execution_policy::value; } #endif diff --git a/include/poolstl/poolstl.hpp b/include/poolstl/poolstl.hpp index 70bd308..bb5d500 100644 --- a/include/poolstl/poolstl.hpp +++ b/include/poolstl/poolstl.hpp @@ -66,6 +66,11 @@ namespace std { using parallel_unsequenced_policy = ::poolstl::execution::parallel_policy; constexpr parallel_unsequenced_policy par_unseq{}; } + + using ::poolstl::is_execution_policy; + + template + constexpr bool is_execution_policy_v = ::poolstl::is_execution_policy::value; } #endif