diff options
author | Ville Voutilainen <ville.voutilainen@gmail.com> | 2017-10-30 16:31:04 +0200 |
---|---|---|
committer | Ville Voutilainen <ville@gcc.gnu.org> | 2017-10-30 16:31:04 +0200 |
commit | ccbbf8df05abc41ef86565706976c5ad403291e7 (patch) | |
tree | d9ab403161f04d2276aeaef0e7aa163807d1e15a /libstdc++-v3/include/std/array | |
parent | 198a8e3cc5176e9234343060fe95de4035d23ac3 (diff) | |
download | gcc-ccbbf8df05abc41ef86565706976c5ad403291e7.zip gcc-ccbbf8df05abc41ef86565706976c5ad403291e7.tar.gz gcc-ccbbf8df05abc41ef86565706976c5ad403291e7.tar.bz2 |
Implement LWG 2485
* include/debug/array (get(const array<_Tp, _Nm>&&)): New.
* include/std/array (get(const array<_Tp, _Nm>&&)): Likewise.
* include/std/tuple (get(const tuple<_Elements...>&&)): Likewise.
(get(const tuple<_Types...>&&)): Likewise.
* include/std/utility
(__pair_get::__const_move_get(const std::pair<_Tp1, _Tp2>&&)):
Likewise.
(get(const std::pair<_Tp1, _Tp2>&&)): Likewise.
(get(const pair<_Tp, _Up>&&)): Likewise.
(get(const pair<_Up, _Tp>&&)): Likewise.
* testsuite/20_util/pair/astuple/get.cc: Add tests for
new overloads.
* testsuite/20_util/pair/astuple/get_by_type.cc: Likewise.
* testsuite/20_util/tuple/element_access/get2.cc: Likewise.
* testsuite/20_util/tuple/element_access/get2_by_type.cc: Likewise.
* testsuite/23_containers/array/tuple_interface/get.cc: Likewise.
* testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc:
Adjust.
* testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
Likewise.
From-SVN: r254222
Diffstat (limited to 'libstdc++-v3/include/std/array')
-rw-r--r-- | libstdc++-v3/include/std/array | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libstdc++-v3/include/std/array b/libstdc++-v3/include/std/array index f058c06..01f7100 100644 --- a/libstdc++-v3/include/std/array +++ b/libstdc++-v3/include/std/array @@ -328,6 +328,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _S_ref(__arr._M_elems, _Int); } + template<std::size_t _Int, typename _Tp, std::size_t _Nm> + constexpr const _Tp&& + get(const array<_Tp, _Nm>&& __arr) noexcept + { + static_assert(_Int < _Nm, "array index is within bounds"); + return std::move(_GLIBCXX_STD_C::get<_Int>(__arr)); + } + _GLIBCXX_END_NAMESPACE_CONTAINER } // namespace std |