diff options
Diffstat (limited to 'libcxx/include/__iterator/iter_swap.h')
| -rw-r--r-- | libcxx/include/__iterator/iter_swap.h | 13 | 
1 files changed, 10 insertions, 3 deletions
| diff --git a/libcxx/include/__iterator/iter_swap.h b/libcxx/include/__iterator/iter_swap.h index 9e06464c3690..d4c0dca1f63d 100644 --- a/libcxx/include/__iterator/iter_swap.h +++ b/libcxx/include/__iterator/iter_swap.h @@ -6,18 +6,21 @@  // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception  //  //===----------------------------------------------------------------------===// +  #ifndef _LIBCPP___ITERATOR_ITER_SWAP_H  #define _LIBCPP___ITERATOR_ITER_SWAP_H +#include <__concepts/class_or_enum.h> +#include <__concepts/swappable.h>  #include <__config>  #include <__iterator/concepts.h>  #include <__iterator/iter_move.h>  #include <__iterator/iterator_traits.h>  #include <__iterator/readable_traits.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/declval.h>  #include <__utility/forward.h>  #include <__utility/move.h> -#include <concepts> -#include <type_traits>  #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)  #  pragma GCC system_header @@ -38,6 +41,7 @@ namespace __iter_swap {    concept __unqualified_iter_swap =      (__class_or_enum<remove_cvref_t<_T1>> || __class_or_enum<remove_cvref_t<_T2>>) &&      requires (_T1&& __x, _T2&& __y) { +      // NOLINTNEXTLINE(libcpp-robust-against-adl) iter_swap ADL calls should only be made through ranges::iter_swap        iter_swap(_VSTD::forward<_T1>(__x), _VSTD::forward<_T2>(__y));      }; @@ -46,7 +50,9 @@ namespace __iter_swap {      indirectly_readable<_T1> && indirectly_readable<_T2> &&      swappable_with<iter_reference_t<_T1>, iter_reference_t<_T2>>; +    struct __fn { +    // NOLINTBEGIN(libcpp-robust-against-adl) iter_swap ADL calls should only be made through ranges::iter_swap      template <class _T1, class _T2>        requires __unqualified_iter_swap<_T1, _T2>      _LIBCPP_HIDE_FROM_ABI @@ -55,6 +61,7 @@ namespace __iter_swap {      {        (void)iter_swap(_VSTD::forward<_T1>(__x), _VSTD::forward<_T2>(__y));      } +    // NOLINTEND(libcpp-robust-against-adl)      template <class _T1, class _T2>        requires (!__unqualified_iter_swap<_T1, _T2>) && @@ -75,7 +82,7 @@ namespace __iter_swap {      constexpr void operator()(_T1&& __x, _T2&& __y) const        noexcept(noexcept(iter_value_t<_T2>(ranges::iter_move(__y))) &&                 noexcept(*__y = ranges::iter_move(__x)) && -               noexcept(*_VSTD::forward<_T1>(__x) = declval<iter_value_t<_T2>>())) +               noexcept(*_VSTD::forward<_T1>(__x) = std::declval<iter_value_t<_T2>>()))      {        iter_value_t<_T2> __old(ranges::iter_move(__y));        *__y = ranges::iter_move(__x); | 
