aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2024-11-08 13:58:23 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2024-11-08 14:39:56 +0000
commitb66a57c0ad300b293ebd366bc29f44f2ddb65c69 (patch)
tree8c27b14da8246e4419250d1816a6cf3b9248f46f /libstdc++-v3
parent12383255fe4e82c31f5e42c72a8fbcb1b5dea35d (diff)
downloadgcc-b66a57c0ad300b293ebd366bc29f44f2ddb65c69.zip
gcc-b66a57c0ad300b293ebd366bc29f44f2ddb65c69.tar.gz
gcc-b66a57c0ad300b293ebd366bc29f44f2ddb65c69.tar.bz2
libstdc++: Do not define _Insert_base::try_emplace before C++17
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.
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/include/bits/hashtable_policy.h2
-rw-r--r--libstdc++-v3/include/debug/map.h2
-rw-r--r--libstdc++-v3/include/debug/unordered_map2
-rw-r--r--libstdc++-v3/testsuite/17_intro/names.cc2
4 files changed, 6 insertions, 2 deletions
diff --git a/libstdc++-v3/include/bits/hashtable_policy.h b/libstdc++-v3/include/bits/hashtable_policy.h
index ecf5031..b5f837e 100644
--- a/libstdc++-v3/include/bits/hashtable_policy.h
+++ b/libstdc++-v3/include/bits/hashtable_policy.h
@@ -1008,6 +1008,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)
@@ -1029,6 +1030,7 @@ namespace __detail
__node._M_node = nullptr;
return { __it, true };
}
+#endif
void
insert(initializer_list<value_type> __l)
diff --git a/libstdc++-v3/include/debug/map.h b/libstdc++-v3/include/debug/map.h
index d0e398f..5323a2b0 100644
--- a/libstdc++-v3/include/debug/map.h
+++ b/libstdc++-v3/include/debug/map.h
@@ -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)
diff --git a/libstdc++-v3/include/debug/unordered_map b/libstdc++-v3/include/debug/unordered_map
index 1acafd8..cc24fd0 100644
--- a/libstdc++-v3/include/debug/unordered_map
+++ b/libstdc++-v3/include/debug/unordered_map
@@ -442,7 +442,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)
diff --git a/libstdc++-v3/testsuite/17_intro/names.cc b/libstdc++-v3/testsuite/17_intro/names.cc
index 5deb310..1952028 100644
--- a/libstdc++-v3/testsuite/17_intro/names.cc
+++ b/libstdc++-v3/testsuite/17_intro/names.cc
@@ -138,6 +138,8 @@
// <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.