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 }