diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2020-10-23 00:58:35 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2020-10-23 01:12:00 +0100 |
commit | ca021ac617277ba73cb694f8d26ec0f5e1293451 (patch) | |
tree | b04d7cb192c82d21a89dfc13c5c6d8158b27cf53 | |
parent | 5c1506304c52c29497a12c65734caaaa99996f77 (diff) | |
download | gcc-ca021ac617277ba73cb694f8d26ec0f5e1293451.zip gcc-ca021ac617277ba73cb694f8d26ec0f5e1293451.tar.gz gcc-ca021ac617277ba73cb694f8d26ec0f5e1293451.tar.bz2 |
libstdc++: Ensure std::forward_as_tuple is defined
The recent changes to reduce includes in <memory_resource> went a bit
too far, and it's possible for std::forward_as_tuple to not be defined
when used.
While doing this, I noticed the problematic calls to forward_as_tuple
were not qualified, so performed unwanted ADL.
libstdc++-v3/ChangeLog:
* include/experimental/memory_resource: Include <tuple>.
(polymorphic_allocator::construct): Qualify forward_as_tuple.
* include/std/memory_resource: Likewise.
-rw-r--r-- | libstdc++-v3/include/experimental/memory_resource | 13 | ||||
-rw-r--r-- | libstdc++-v3/include/std/memory_resource | 13 |
2 files changed, 14 insertions, 12 deletions
diff --git a/libstdc++-v3/include/experimental/memory_resource b/libstdc++-v3/include/experimental/memory_resource index 1c4de70..ca1bad9 100644 --- a/libstdc++-v3/include/experimental/memory_resource +++ b/libstdc++-v3/include/experimental/memory_resource @@ -36,6 +36,7 @@ #include <memory> // align, uses_allocator, __uses_alloc #include <experimental/utility> // pair, experimental::erased_type +#include <tuple> // tuple, forward_as_tuple #include <atomic> // atomic #include <new> // placement new #include <cstddef> // max_align_t @@ -196,8 +197,8 @@ namespace pmr { construct(pair<_Tp1,_Tp2>* __p, _Up&& __x, _Vp&& __y) { this->construct(__p, piecewise_construct, - forward_as_tuple(std::forward<_Up>(__x)), - forward_as_tuple(std::forward<_Vp>(__y))); + std::forward_as_tuple(std::forward<_Up>(__x)), + std::forward_as_tuple(std::forward<_Vp>(__y))); } template <typename _Tp1, typename _Tp2, typename _Up, typename _Vp> @@ -205,8 +206,8 @@ namespace pmr { construct(pair<_Tp1,_Tp2>* __p, const std::pair<_Up, _Vp>& __pr) { this->construct(__p, piecewise_construct, - forward_as_tuple(__pr.first), - forward_as_tuple(__pr.second)); + std::forward_as_tuple(__pr.first), + std::forward_as_tuple(__pr.second)); } template <typename _Tp1, typename _Tp2, typename _Up, typename _Vp> @@ -214,8 +215,8 @@ namespace pmr { construct(pair<_Tp1,_Tp2>* __p, pair<_Up, _Vp>&& __pr) { this->construct(__p, piecewise_construct, - forward_as_tuple(std::forward<_Up>(__pr.first)), - forward_as_tuple(std::forward<_Vp>(__pr.second))); + std::forward_as_tuple(std::forward<_Up>(__pr.first)), + std::forward_as_tuple(std::forward<_Vp>(__pr.second))); } template <typename _Up> diff --git a/libstdc++-v3/include/std/memory_resource b/libstdc++-v3/include/std/memory_resource index 350799e..40e23a2 100644 --- a/libstdc++-v3/include/std/memory_resource +++ b/libstdc++-v3/include/std/memory_resource @@ -45,6 +45,7 @@ #if ! __cpp_lib_make_obj_using_allocator # include <utility> // pair, index_sequence +# include <tuple> // tuple, forward_as_tuple #endif namespace std _GLIBCXX_VISIBILITY(default) @@ -286,8 +287,8 @@ namespace pmr construct(pair<_Tp1, _Tp2>* __p, _Up&& __x, _Vp&& __y) { this->construct(__p, piecewise_construct, - forward_as_tuple(std::forward<_Up>(__x)), - forward_as_tuple(std::forward<_Vp>(__y))); + std::forward_as_tuple(std::forward<_Up>(__x)), + std::forward_as_tuple(std::forward<_Vp>(__y))); } template <typename _Tp1, typename _Tp2, typename _Up, typename _Vp> @@ -296,8 +297,8 @@ namespace pmr construct(pair<_Tp1, _Tp2>* __p, const std::pair<_Up, _Vp>& __pr) { this->construct(__p, piecewise_construct, - forward_as_tuple(__pr.first), - forward_as_tuple(__pr.second)); + std::forward_as_tuple(__pr.first), + std::forward_as_tuple(__pr.second)); } template<typename _Tp1, typename _Tp2, typename _Up, typename _Vp> @@ -306,8 +307,8 @@ namespace pmr construct(pair<_Tp1, _Tp2>* __p, pair<_Up, _Vp>&& __pr) { this->construct(__p, piecewise_construct, - forward_as_tuple(std::forward<_Up>(__pr.first)), - forward_as_tuple(std::forward<_Vp>(__pr.second))); + std::forward_as_tuple(std::forward<_Up>(__pr.first)), + std::forward_as_tuple(std::forward<_Vp>(__pr.second))); } #else // make_obj_using_allocator template<typename _Tp1, typename... _Args> |