On 09/11/21 5:25 pm, Jonathan Wakely wrote:


On Mon, 8 Nov 2021 at 21:36, François Dumont <frs.dum...@gmail.com <mailto:frs.dum...@gmail.com>> wrote:

    Yet another version this time with only 1 guard implementation.
    The predicate to invalidate the safe iterators has been externalized.

    Ok to commit ?


I like this version a lot - thanks for persisting with it.

OK to commit, thanks.


As an aside ...

--- a/libstdc++-v3/testsuite/util/testsuite_abi.h
+++ b/libstdc++-v3/testsuite/util/testsuite_abi.h
@@ -24,7 +24,11 @@
 #include <locale>
 #if __cplusplus >= 201103L
 # include <unordered_map>
+# ifdef _GLIBCXX_DEBUG
+namespace unord = std::_GLIBCXX_STD_C;
+# else
 namespace unord = std;
+# endif
 #else
 # include <tr1/unordered_map>
 namespace unord = std::tr1;


Several times I've been annoyed by the fact that we don't have a way to refer to std::_GLIBCXX_STD_C::vector etc. that is always valid, in normal mode and debug mode.

Maybe we should add:

namespace std { namespace _GLIBCXX_STD_C = ::std; }

That way we can refer to std::_GLIBCXX_STD_C::foo in normal mode, and it will mean the same thing as in debug mode. So we don't need to use #if conditions like this.


Good idea, I'll prepare it.

François

Reply via email to