@@ -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)
@@ -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)
@@ -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)
@@ -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.