From 2137aa92412da363d52ef699987441be28b239d0 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Sat, 10 Oct 2020 21:22:12 +0100 Subject: [PATCH] libstdc++: Replace use of reserved name that clashes [PR 97362] The name __deref is defined as a macro by Windows headers. This renames the __deref() helper function to __ref. It doesn't actually dereference an iterator. it just has the same type as the iterator's reference type. libstdc++-v3/ChangeLog: PR libstdc++/97362 * doc/html/manual/source_code_style.html: Regenerate. * doc/xml/manual/appendix_contributing.xml: Add __deref to BADNAMES. * include/debug/functions.h (_Irreflexive_checker::__deref): Rename to __ref. * testsuite/17_intro/badnames.cc: Check __deref. --- libstdc++-v3/doc/html/manual/source_code_style.html | 1 + libstdc++-v3/doc/xml/manual/appendix_contributing.xml | 6 ++++-- libstdc++-v3/include/debug/functions.h | 6 +++--- libstdc++-v3/testsuite/17_intro/badnames.cc | 1 + 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/libstdc++-v3/doc/html/manual/source_code_style.html b/libstdc++-v3/doc/html/manual/source_code_style.html index 680e9e70829..669f16d165f 100644 --- a/libstdc++-v3/doc/html/manual/source_code_style.html +++ b/libstdc++-v3/doc/html/manual/source_code_style.html @@ -32,6 +32,7 @@
      MS adds:
      _T
+ __deref

      BSD adds:
      __used
diff --git a/libstdc++-v3/doc/xml/manual/appendix_contributing.xml b/libstdc++-v3/doc/xml/manual/appendix_contributing.xml index 00991128525..4380cbbe3f1 100644 --- a/libstdc++-v3/doc/xml/manual/appendix_contributing.xml +++ b/libstdc++-v3/doc/xml/manual/appendix_contributing.xml @@ -412,8 +412,9 @@ indicate a place that may require attention for multi-thread safety. -
Bad Identifiers - + +
Bad Identifiers + Identifiers that conflict and should be avoided. @@ -445,6 +446,7 @@ indicate a place that may require attention for multi-thread safety. MS adds: _T + __deref BSD adds: __used diff --git a/libstdc++-v3/include/debug/functions.h b/libstdc++-v3/include/debug/functions.h index aaccc8dfe07..942d35f358d 100644 --- a/libstdc++-v3/include/debug/functions.h +++ b/libstdc++-v3/include/debug/functions.h @@ -421,10 +421,10 @@ namespace __gnu_debug { template static typename std::iterator_traits<_It>::reference - __deref(); + __ref(); template() < __deref<_It>())> + typename = decltype(__ref<_It>() < __ref<_It>())> _GLIBCXX20_CONSTEXPR static bool _S_is_valid(_It __it) @@ -438,7 +438,7 @@ namespace __gnu_debug { return true; } template()(__deref<_It>(), __deref<_It>()))> + = decltype(std::declval<_Pred>()(__ref<_It>(), __ref<_It>()))> _GLIBCXX20_CONSTEXPR static bool _S_is_valid_pred(_It __it, _Pred __pred) diff --git a/libstdc++-v3/testsuite/17_intro/badnames.cc b/libstdc++-v3/testsuite/17_intro/badnames.cc index c69b8c45d81..a6b98db26f2 100644 --- a/libstdc++-v3/testsuite/17_intro/badnames.cc +++ b/libstdc++-v3/testsuite/17_intro/badnames.cc @@ -62,6 +62,7 @@ // MS adds: #define _T _T is a BADNAME +#define __deref __deref is a BADNAME // BSD adds: #define __used __used is a BADNAME -- 2.30.2