The __iter_swap class template and explicit specialization are only
declared (and used) for C++03 so _GLIBCXX20_CONSTEXPR does nothing here.

        * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
        redundant _GLIBCXX20_CONSTEXPR.

Tested x86_64-linux, committed to master.

commit d1aa7705d59e56191c2ccc5594983d8fa0832718
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Feb 6 10:45:38 2020 +0000

    libstdc++: Remove redundant macro that is always empty
    
    The __iter_swap class template and explicit specialization are only
    declared (and used) for C++03 so _GLIBCXX20_CONSTEXPR does nothing here.
    
            * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): 
Remove
            redundant _GLIBCXX20_CONSTEXPR.

diff --git a/libstdc++-v3/include/bits/stl_algobase.h 
b/libstdc++-v3/include/bits/stl_algobase.h
index dc922a0f3d2..efda15f816e 100644
--- a/libstdc++-v3/include/bits/stl_algobase.h
+++ b/libstdc++-v3/include/bits/stl_algobase.h
@@ -139,7 +139,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     struct __iter_swap
     {
       template<typename _ForwardIterator1, typename _ForwardIterator2>
-       _GLIBCXX20_CONSTEXPR
        static void
        iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
        {
@@ -155,14 +154,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     struct __iter_swap<true>
     {
       template<typename _ForwardIterator1, typename _ForwardIterator2>
-       _GLIBCXX20_CONSTEXPR
        static void
        iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
        {
          swap(*__a, *__b);
        }
     };
-#endif
+#endif // C++03
 
   /**
    *  @brief Swaps the contents of two iterators.
@@ -205,6 +203,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        && __are_same<_ValueType2&, _ReferenceType2>::__value>::
        iter_swap(__a, __b);
 #else
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 187. iter_swap underspecified
       swap(*__a, *__b);
 #endif
     }

Reply via email to