1
1
// -*- C++ -*-
2
2
// ===----------------------------------------------------------------------===//
3
3
//
4
- // Copyright (C) 2017-2019 Intel Corporation
4
+ // Copyright (C) 2017-2020 Intel Corporation
5
5
//
6
6
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7
7
//
@@ -106,6 +106,7 @@ exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIte
106
106
std::plus<_Tp>(), pstl::__internal::__no_op ());
107
107
}
108
108
109
+ #if !_PSTL_EXCLUSIVE_SCAN_WITH_BINARY_OP_AMBIGUITY
109
110
template <class _ExecutionPolicy , class _ForwardIterator1 , class _ForwardIterator2 , class _Tp , class _BinaryOperation >
110
111
pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
111
112
exclusive_scan (_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
@@ -114,6 +115,45 @@ exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIte
114
115
return transform_exclusive_scan (std::forward<_ExecutionPolicy>(__exec), __first, __last, __result, __init,
115
116
__binary_op, pstl::__internal::__no_op ());
116
117
}
118
+ #else
119
+ template <class _ForwardIterator1 , class _ForwardIterator2 , class _Tp , class _BinaryOperation >
120
+ _ForwardIterator2
121
+ exclusive_scan (pstl::execution::sequenced_policy __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
122
+ _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op)
123
+ {
124
+ return transform_exclusive_scan (__exec, __first, __last, __result, __init, __binary_op,
125
+ pstl::__internal::__no_op ());
126
+ }
127
+
128
+ template <class _ForwardIterator1 , class _ForwardIterator2 , class _Tp , class _BinaryOperation >
129
+ _ForwardIterator2
130
+ exclusive_scan (pstl::execution::unsequenced_policy __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
131
+ _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op)
132
+ {
133
+ return transform_exclusive_scan (__exec, __first, __last, __result, __init, __binary_op,
134
+ pstl::__internal::__no_op ());
135
+ }
136
+
137
+ # if _PSTL_USE_PAR_POLICIES
138
+ template <class _ForwardIterator1 , class _ForwardIterator2 , class _Tp , class _BinaryOperation >
139
+ _ForwardIterator2
140
+ exclusive_scan (pstl::execution::parallel_policy __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
141
+ _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op)
142
+ {
143
+ return transform_exclusive_scan (__exec, __first, __last, __result, __init, __binary_op,
144
+ pstl::__internal::__no_op ());
145
+ }
146
+
147
+ template <class _ForwardIterator1 , class _ForwardIterator2 , class _Tp , class _BinaryOperation >
148
+ _ForwardIterator2
149
+ exclusive_scan (pstl::execution::parallel_unsequenced_policy __exec, _ForwardIterator1 __first,
150
+ _ForwardIterator1 __last, _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op)
151
+ {
152
+ return transform_exclusive_scan (__exec, __first, __last, __result, __init, __binary_op,
153
+ pstl::__internal::__no_op ());
154
+ }
155
+ # endif
156
+ #endif
117
157
118
158
// [inclusive.scan]
119
159
0 commit comments