|
113 | 113 | }
|
114 | 114 |
|
115 | 115 | // Exposition only: Suppress template argument deduction.
|
116 |
| -template<class T> struct no_deduce { using type = T; }; |
117 |
| -template<class T> using no_deduce_t = typename no_deduce<T>::type; |
| 116 | +template<class T> struct type_identity { using type = T; }; |
| 117 | +template<class T> using type_identity_t = typename type_identity<T>::type; |
118 | 118 |
|
119 | 119 | // \ref{parallel.alg.reductions}, Support for reductions
|
120 | 120 | template<class T, class BinaryOperation>
|
|
142 | 142 |
|
143 | 143 | // \ref{parallel.alg.forloop}, For loop
|
144 | 144 | template<class I, class... Rest>
|
145 |
| - void for_loop(no_deduce_t<I> start, I finish, Rest&&... rest); |
| 145 | + void for_loop(type_identity_t<I> start, I finish, Rest&&... rest); |
146 | 146 | template<class ExecutionPolicy,
|
147 | 147 | class I, class... Rest>
|
148 | 148 | void for_loop(ExecutionPolicy&& exec,
|
149 |
| - no_deduce_t<I> start, I finish, Rest&&... rest); |
| 149 | + type_identity_t<I> start, I finish, Rest&&... rest); |
150 | 150 | template<class I, class S, class... Rest>
|
151 |
| - void for_loop_strided(no_deduce_t<I> start, I finish, |
| 151 | + void for_loop_strided(type_identity_t<I> start, I finish, |
152 | 152 | S stride, Rest&&... rest);
|
153 | 153 | template<class ExecutionPolicy,
|
154 | 154 | class I, class S, class... Rest>
|
155 | 155 | void for_loop_strided(ExecutionPolicy&& exec,
|
156 |
| - no_deduce_t<I> start, I finish, |
| 156 | + type_identity_t<I> start, I finish, |
157 | 157 | S stride, Rest&&... rest);
|
158 | 158 | template<class I, class Size, class... Rest>
|
159 | 159 | void for_loop_n(I start, Size n, Rest&&... rest);
|
|
305 | 305 |
|
306 | 306 | \begin{itemdecl}
|
307 | 307 | template<class I, class... Rest>
|
308 |
| - void for_loop(no_deduce_t<I> start, I finish, Rest&&... rest); |
| 308 | + void for_loop(type_identity_t<I> start, I finish, Rest&&... rest); |
309 | 309 | template<class ExecutionPolicy, class I, class... Rest>
|
310 |
| - void for_loop(ExecutionPolicy&& exec, no_deduce_t<I> start, I finish, Rest&&... rest); |
| 310 | + void for_loop(ExecutionPolicy&& exec, type_identity_t<I> start, I finish, Rest&&... rest); |
311 | 311 |
|
312 | 312 | template<class I, class S, class... Rest>
|
313 |
| - void for_loop_strided(no_deduce_t<I> start, I finish, S stride, Rest&&... rest); |
| 313 | + void for_loop_strided(type_identity_t<I> start, I finish, S stride, Rest&&... rest); |
314 | 314 | template<class ExecutionPolicy, class I, class S, class... Rest>
|
315 |
| - void for_loop_strided(ExecutionPolicy&& exec, no_deduce_t<I> start, I finish, S stride, |
| 315 | + void for_loop_strided(ExecutionPolicy&& exec, type_identity_t<I> start, I finish, S stride, |
316 | 316 | Rest&&... rest);
|
317 | 317 |
|
318 | 318 | template<class I, class Size, class... Rest>
|
|
0 commit comments