@@ -77,7 +77,8 @@ struct _LIBCPP_TEMPLATE_VIS contiguous_iterator_tag : public random_access_itera
7777
7878template <class _Iter >
7979struct __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> >;
8182};
8283template <class _Iter >
8384using _ITER_TRAITS _LIBCPP_NODEBUG = typename __iter_traits_cache<_Iter>::type;
@@ -101,9 +102,10 @@ struct __test_iter_concept : _IsValidExpansion<_Tester::template _Apply, _Iter>,
101102
102103template <class _Iter >
103104struct __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> >;
107109};
108110
109111template <class _Iter >
@@ -221,12 +223,12 @@ concept __specifies_members = requires {
221223
222224template <class >
223225struct __iterator_traits_member_pointer_or_void {
224- using type = void ;
226+ using type _LIBCPP_NODEBUG = void ;
225227};
226228
227229template <__has_member_pointer _Tp>
228230struct __iterator_traits_member_pointer_or_void <_Tp> {
229- using type = typename _Tp::pointer;
231+ using type _LIBCPP_NODEBUG = typename _Tp::pointer;
230232};
231233
232234template <class _Tp >
@@ -239,63 +241,63 @@ concept __cpp17_input_iterator_missing_members =
239241// Otherwise, `pointer` names `void`.
240242template <class >
241243struct __iterator_traits_member_pointer_or_arrow_or_void {
242- using type = void ;
244+ using type _LIBCPP_NODEBUG = void ;
243245};
244246
245247// [iterator.traits]/3.2.1
246248// If the qualified-id `I::pointer` is valid and denotes a type, `pointer` names that type.
247249template <__has_member_pointer _Ip>
248250struct __iterator_traits_member_pointer_or_arrow_or_void <_Ip> {
249- using type = typename _Ip::pointer;
251+ using type _LIBCPP_NODEBUG = typename _Ip::pointer;
250252};
251253
252254// Otherwise, if `decltype(declval<I&>().operator->())` is well-formed, then `pointer` names that
253255// type.
254256template <class _Ip >
255257 requires requires (_Ip& __i) { __i.operator ->(); } && (!__has_member_pointer<_Ip>)
256258struct __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 ->());
258260};
259261
260262// Otherwise, `reference` names `iter-reference-t<I>`.
261263template <class _Ip >
262264struct __iterator_traits_member_reference {
263- using type = iter_reference_t <_Ip>;
265+ using type _LIBCPP_NODEBUG = iter_reference_t <_Ip>;
264266};
265267
266268// [iterator.traits]/3.2.2
267269// If the qualified-id `I::reference` is valid and denotes a type, `reference` names that type.
268270template <__has_member_reference _Ip>
269271struct __iterator_traits_member_reference <_Ip> {
270- using type = typename _Ip::reference;
272+ using type _LIBCPP_NODEBUG = typename _Ip::reference;
271273};
272274
273275// [iterator.traits]/3.2.3.4
274276// input_iterator_tag
275277template <class _Ip >
276278struct __deduce_iterator_category {
277- using type = input_iterator_tag;
279+ using type _LIBCPP_NODEBUG = input_iterator_tag;
278280};
279281
280282// [iterator.traits]/3.2.3.1
281283// `random_access_iterator_tag` if `I` satisfies `cpp17-random-access-iterator`, or otherwise
282284template <__iterator_traits_detail::__cpp17_random_access_iterator _Ip>
283285struct __deduce_iterator_category <_Ip> {
284- using type = random_access_iterator_tag;
286+ using type _LIBCPP_NODEBUG = random_access_iterator_tag;
285287};
286288
287289// [iterator.traits]/3.2.3.2
288290// `bidirectional_iterator_tag` if `I` satisfies `cpp17-bidirectional-iterator`, or otherwise
289291template <__iterator_traits_detail::__cpp17_bidirectional_iterator _Ip>
290292struct __deduce_iterator_category <_Ip> {
291- using type = bidirectional_iterator_tag;
293+ using type _LIBCPP_NODEBUG = bidirectional_iterator_tag;
292294};
293295
294296// [iterator.traits]/3.2.3.3
295297// `forward_iterator_tag` if `I` satisfies `cpp17-forward-iterator`, or otherwise
296298template <__iterator_traits_detail::__cpp17_forward_iterator _Ip>
297299struct __deduce_iterator_category <_Ip> {
298- using type = forward_iterator_tag;
300+ using type _LIBCPP_NODEBUG = forward_iterator_tag;
299301};
300302
301303template <class _Ip >
@@ -306,21 +308,21 @@ struct __iterator_traits_iterator_category : __deduce_iterator_category<_Ip> {};
306308// that type.
307309template <__has_member_iterator_category _Ip>
308310struct __iterator_traits_iterator_category <_Ip> {
309- using type = typename _Ip::iterator_category;
311+ using type _LIBCPP_NODEBUG = typename _Ip::iterator_category;
310312};
311313
312314// otherwise, it names void.
313315template <class >
314316struct __iterator_traits_difference_type {
315- using type = void ;
317+ using type _LIBCPP_NODEBUG = void ;
316318};
317319
318320// If the qualified-id `incrementable_traits<I>::difference_type` is valid and denotes a type, then
319321// `difference_type` names that type;
320322template <class _Ip >
321323 requires requires { typename incrementable_traits<_Ip>::difference_type; }
322324struct __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;
324326};
325327
326328// [iterator.traits]/3.4
0 commit comments