@@ -56,16 +56,9 @@ namespace stdexec {
5656 parallel_unsequenced_policy& operator =(const parallel_unsequenced_policy&) = delete ;
5757 };
5858
59- struct unsequenced_policy {
60- constexpr explicit unsequenced_policy (__hidden_construction) { };
61- unsequenced_policy (const unsequenced_policy&) = delete ;
62- unsequenced_policy& operator =(const unsequenced_policy&) = delete ;
63- };
64-
6559 inline constexpr sequenced_policy seq{__hidden_construction{}};
6660 inline constexpr parallel_policy par{__hidden_construction{}};
6761 inline constexpr parallel_unsequenced_policy par_unseq{__hidden_construction{}};
68- inline constexpr unsequenced_policy unseq{__hidden_construction{}};
6962
7063 template <typename >
7164 inline constexpr bool is_execution_policy_v = false ;
@@ -79,11 +72,35 @@ namespace stdexec {
7972 template <>
8073 inline constexpr bool is_execution_policy_v<parallel_unsequenced_policy> = true ;
8174
82- template <>
83- inline constexpr bool is_execution_policy_v<unsequenced_policy> = true ;
84-
8575 template <class _T >
8676 struct is_execution_policy : std::bool_constant<is_execution_policy_v<_T>> { };
8777
8878#endif
79+
80+ #if STDEXEC_HAS_UNSEQUENCED_EXECUTION_POLICY()
81+
82+ using unsequenced_policy = std::execution::unsequenced_policy;
83+
84+ using unseq = std::execution::unseq;
85+
86+ #else
87+
88+ #if STDEXEC_HAS_EXECUTION_POLICY()
89+ // already defined above
90+ struct __hidden_construction { };
91+ #endif
92+
93+ struct unsequenced_policy {
94+ constexpr explicit unsequenced_policy (__hidden_construction) { };
95+ unsequenced_policy (const unsequenced_policy&) = delete ;
96+ unsequenced_policy& operator =(const unsequenced_policy&) = delete ;
97+ };
98+
99+ inline constexpr unsequenced_policy unseq{__hidden_construction{}};
100+
101+ template <>
102+ inline constexpr bool is_execution_policy_v<unsequenced_policy> = true ;
103+
104+ #endif
105+
89106} // namespace stdexec
0 commit comments