diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2017-10-27 18:49:36 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2017-10-27 18:49:36 +0100 |
commit | 6c6705a90426f383208a482263812cfe2894fa74 (patch) | |
tree | dcb96f4ec0c1fd68cfc510e5efab18f42fef21f6 | |
parent | 5880ce184a6fd92a426d1ca7c48d0a4213a9d8e2 (diff) | |
download | gcc-6c6705a90426f383208a482263812cfe2894fa74.zip gcc-6c6705a90426f383208a482263812cfe2894fa74.tar.gz gcc-6c6705a90426f383208a482263812cfe2894fa74.tar.bz2 |
Simplify _Node_insert_return to avoid including <tuple>
* include/bits/node_handle.h (_Node_insert_return::get): Avoid
use of std::tie and std::get.
From-SVN: r254162
-rw-r--r-- | libstdc++-v3/ChangeLog | 3 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/node_handle.h | 37 |
2 files changed, 35 insertions, 5 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 3668990..796e32c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,8 @@ 2017-10-27 Jonathan Wakely <jwakely@redhat.com> + * include/bits/node_handle.h (_Node_insert_return::get): Avoid + use of std::tie and std::get. + * include/Makefile.am: Put headers in alphabetical order. * include/Makefile.in: Regenerate. diff --git a/libstdc++-v3/include/bits/node_handle.h b/libstdc++-v3/include/bits/node_handle.h index c7694a1..f93bfd7 100644 --- a/libstdc++-v3/include/bits/node_handle.h +++ b/libstdc++-v3/include/bits/node_handle.h @@ -37,7 +37,6 @@ # define __cpp_lib_node_extract 201606 #include <optional> -#include <tuple> #include <bits/alloc_traits.h> #include <bits/ptr_traits.h> @@ -286,22 +285,50 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<size_t _Idx> decltype(auto) get() & - { return std::get<_Idx>(std::tie(inserted, position, node)); } + { + static_assert(_Idx < 3); + if constexpr (_Idx == 0) + return inserted; + else if constexpr (_Idx == 1) + return position; + else if constexpr (_Idx == 2) + return node; + } template<size_t _Idx> decltype(auto) get() const & - { return std::get<_Idx>(std::tie(inserted, position, node)); } + { + static_assert(_Idx < 3); + if constexpr (_Idx == 0) + return inserted; + else if constexpr (_Idx == 1) + return position; + else if constexpr (_Idx == 2) + return node; + } template<size_t _Idx> decltype(auto) get() && { - return std::move(std::get<_Idx>(std::tie(inserted, position, node))); + static_assert(_Idx < 3); + if constexpr (_Idx == 0) + return std::move(inserted); + else if constexpr (_Idx == 1) + return std::move(position); + else if constexpr (_Idx == 2) + return std::move(node); } template<size_t _Idx> decltype(auto) get() const && { - return std::move(std::get<_Idx>(std::tie(inserted, position, node))); + static_assert(_Idx < 3); + if constexpr (_Idx == 0) + return std::move(inserted); + else if constexpr (_Idx == 1) + return std::move(position); + else if constexpr (_Idx == 2) + return std::move(node); } }; |