]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Do not define _Insert_base::try_emplace before C++17
authorJonathan Wakely <jwakely@redhat.com>
Fri, 8 Nov 2024 13:58:23 +0000 (13:58 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Mon, 11 Nov 2024 18:45:52 +0000 (18:45 +0000)
This is not a reserved name in C++11 and C++14, so must not be defined.

Also use the appropriate feature test macros for the try_emplace members
of the Debug Mode maps.

libstdc++-v3/ChangeLog:

* include/bits/hashtable_policy.h (_Insert_base::try_emplace):
Do not define for C++11 and C++14.
* include/debug/map.h (try_emplace): Use feature test macro.
* include/debug/unordered_map (try_emplace): Likewise.
* testsuite/17_intro/names.cc: Define try_emplace before C++17.

(cherry picked from commit b66a57c0ad300b293ebd366bc29f44f2ddb65c69)

libstdc++-v3/include/bits/hashtable_policy.h
libstdc++-v3/include/debug/map.h
libstdc++-v3/include/debug/unordered_map
libstdc++-v3/testsuite/17_intro/names.cc

index 26def24f24e69a3b4c2000acae2122d856dc0f49..68ec8d9470a7cfe50a07b4ed7a205d5fc8ce4692 100644 (file)
@@ -966,6 +966,7 @@ namespace __detail
        return __h._M_insert(__hint, __v, __node_gen, __unique_keys{});
       }
 
+#ifdef __glibcxx_unordered_map_try_emplace // C++ >= 17 && HOSTED
       template<typename _KType, typename... _Args>
        std::pair<iterator, bool>
        try_emplace(const_iterator, _KType&& __k, _Args&&... __args)
@@ -987,6 +988,7 @@ namespace __detail
          __node._M_node = nullptr;
          return { __it, true };
        }
+#endif
 
       void
       insert(initializer_list<value_type> __l)
index d0e398f0fd97ebcc7a904629562cdb07c3626937..5323a2b0d95076c70f7d625775406dccda6b76e6 100644 (file)
@@ -344,7 +344,7 @@ namespace __debug
        }
 
 
-#if __cplusplus > 201402L
+#ifdef __glibcxx_map_try_emplace // C++ >= 17 && HOSTED
       template <typename... _Args>
         pair<iterator, bool>
         try_emplace(const key_type& __k, _Args&&... __args)
index 8a969d817402fca90cf8fde43a74e81559ae2420..1700da16c0f36c16ac2abcafab331275929065bb 100644 (file)
@@ -440,7 +440,7 @@ namespace __debug
          _M_check_rehashed(__bucket_count);
        }
 
-#if __cplusplus > 201402L
+#ifdef __glibcxx_unordered_map_try_emplace // C++ >= 17 && HOSTED
       template <typename... _Args>
        pair<iterator, bool>
        try_emplace(const key_type& __k, _Args&&... __args)
index 9b0ffcb50b2e07a5ff2c2bd480b9eecd402c78d3..ab12641b14dfd49a165858a2a94676244e6cc74b 100644 (file)
 // <charconv> defines to_chars_result::ptr and to_chars_result::ec
 #define ec (
 #define ptr (
+// <map> and <unordered_map> define try_emplace
+#define try_emplace (
 #endif
 
 // These clash with newlib so don't use them.