@@ -77,7 +77,8 @@ struct _LIBCPP_TEMPLATE_VIS contiguous_iterator_tag : public random_access_itera
77
77
78
78
template <class _Iter >
79
79
struct __iter_traits_cache {
80
- using type = _If< __is_primary_template<iterator_traits<_Iter> >::value, _Iter, iterator_traits<_Iter> >;
80
+ using type _LIBCPP_NODEBUG =
81
+ _If<__is_primary_template<iterator_traits<_Iter> >::value, _Iter, iterator_traits<_Iter> >;
81
82
};
82
83
template <class _Iter >
83
84
using _ITER_TRAITS _LIBCPP_NODEBUG = typename __iter_traits_cache<_Iter>::type;
@@ -101,9 +102,10 @@ struct __test_iter_concept : _IsValidExpansion<_Tester::template _Apply, _Iter>,
101
102
102
103
template <class _Iter >
103
104
struct __iter_concept_cache {
104
- using type = _Or< __test_iter_concept<_Iter, __iter_concept_concept_test>,
105
- __test_iter_concept<_Iter, __iter_concept_category_test>,
106
- __test_iter_concept<_Iter, __iter_concept_random_fallback> >;
105
+ using type _LIBCPP_NODEBUG =
106
+ _Or<__test_iter_concept<_Iter, __iter_concept_concept_test>,
107
+ __test_iter_concept<_Iter, __iter_concept_category_test>,
108
+ __test_iter_concept<_Iter, __iter_concept_random_fallback> >;
107
109
};
108
110
109
111
template <class _Iter >
@@ -221,12 +223,12 @@ concept __specifies_members = requires {
221
223
222
224
template <class >
223
225
struct __iterator_traits_member_pointer_or_void {
224
- using type = void ;
226
+ using type _LIBCPP_NODEBUG = void ;
225
227
};
226
228
227
229
template <__has_member_pointer _Tp>
228
230
struct __iterator_traits_member_pointer_or_void <_Tp> {
229
- using type = typename _Tp::pointer;
231
+ using type _LIBCPP_NODEBUG = typename _Tp::pointer;
230
232
};
231
233
232
234
template <class _Tp >
@@ -239,63 +241,63 @@ concept __cpp17_input_iterator_missing_members =
239
241
// Otherwise, `pointer` names `void`.
240
242
template <class >
241
243
struct __iterator_traits_member_pointer_or_arrow_or_void {
242
- using type = void ;
244
+ using type _LIBCPP_NODEBUG = void ;
243
245
};
244
246
245
247
// [iterator.traits]/3.2.1
246
248
// If the qualified-id `I::pointer` is valid and denotes a type, `pointer` names that type.
247
249
template <__has_member_pointer _Ip>
248
250
struct __iterator_traits_member_pointer_or_arrow_or_void <_Ip> {
249
- using type = typename _Ip::pointer;
251
+ using type _LIBCPP_NODEBUG = typename _Ip::pointer;
250
252
};
251
253
252
254
// Otherwise, if `decltype(declval<I&>().operator->())` is well-formed, then `pointer` names that
253
255
// type.
254
256
template <class _Ip >
255
257
requires requires (_Ip& __i) { __i.operator ->(); } && (!__has_member_pointer<_Ip>)
256
258
struct __iterator_traits_member_pointer_or_arrow_or_void <_Ip> {
257
- using type = decltype (std::declval<_Ip&>().operator ->());
259
+ using type _LIBCPP_NODEBUG = decltype (std::declval<_Ip&>().operator ->());
258
260
};
259
261
260
262
// Otherwise, `reference` names `iter-reference-t<I>`.
261
263
template <class _Ip >
262
264
struct __iterator_traits_member_reference {
263
- using type = iter_reference_t <_Ip>;
265
+ using type _LIBCPP_NODEBUG = iter_reference_t <_Ip>;
264
266
};
265
267
266
268
// [iterator.traits]/3.2.2
267
269
// If the qualified-id `I::reference` is valid and denotes a type, `reference` names that type.
268
270
template <__has_member_reference _Ip>
269
271
struct __iterator_traits_member_reference <_Ip> {
270
- using type = typename _Ip::reference;
272
+ using type _LIBCPP_NODEBUG = typename _Ip::reference;
271
273
};
272
274
273
275
// [iterator.traits]/3.2.3.4
274
276
// input_iterator_tag
275
277
template <class _Ip >
276
278
struct __deduce_iterator_category {
277
- using type = input_iterator_tag;
279
+ using type _LIBCPP_NODEBUG = input_iterator_tag;
278
280
};
279
281
280
282
// [iterator.traits]/3.2.3.1
281
283
// `random_access_iterator_tag` if `I` satisfies `cpp17-random-access-iterator`, or otherwise
282
284
template <__iterator_traits_detail::__cpp17_random_access_iterator _Ip>
283
285
struct __deduce_iterator_category <_Ip> {
284
- using type = random_access_iterator_tag;
286
+ using type _LIBCPP_NODEBUG = random_access_iterator_tag;
285
287
};
286
288
287
289
// [iterator.traits]/3.2.3.2
288
290
// `bidirectional_iterator_tag` if `I` satisfies `cpp17-bidirectional-iterator`, or otherwise
289
291
template <__iterator_traits_detail::__cpp17_bidirectional_iterator _Ip>
290
292
struct __deduce_iterator_category <_Ip> {
291
- using type = bidirectional_iterator_tag;
293
+ using type _LIBCPP_NODEBUG = bidirectional_iterator_tag;
292
294
};
293
295
294
296
// [iterator.traits]/3.2.3.3
295
297
// `forward_iterator_tag` if `I` satisfies `cpp17-forward-iterator`, or otherwise
296
298
template <__iterator_traits_detail::__cpp17_forward_iterator _Ip>
297
299
struct __deduce_iterator_category <_Ip> {
298
- using type = forward_iterator_tag;
300
+ using type _LIBCPP_NODEBUG = forward_iterator_tag;
299
301
};
300
302
301
303
template <class _Ip >
@@ -306,21 +308,21 @@ struct __iterator_traits_iterator_category : __deduce_iterator_category<_Ip> {};
306
308
// that type.
307
309
template <__has_member_iterator_category _Ip>
308
310
struct __iterator_traits_iterator_category <_Ip> {
309
- using type = typename _Ip::iterator_category;
311
+ using type _LIBCPP_NODEBUG = typename _Ip::iterator_category;
310
312
};
311
313
312
314
// otherwise, it names void.
313
315
template <class >
314
316
struct __iterator_traits_difference_type {
315
- using type = void ;
317
+ using type _LIBCPP_NODEBUG = void ;
316
318
};
317
319
318
320
// If the qualified-id `incrementable_traits<I>::difference_type` is valid and denotes a type, then
319
321
// `difference_type` names that type;
320
322
template <class _Ip >
321
323
requires requires { typename incrementable_traits<_Ip>::difference_type; }
322
324
struct __iterator_traits_difference_type <_Ip> {
323
- using type = typename incrementable_traits<_Ip>::difference_type;
325
+ using type _LIBCPP_NODEBUG = typename incrementable_traits<_Ip>::difference_type;
324
326
};
325
327
326
328
// [iterator.traits]/3.4
0 commit comments