aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std/array
diff options
context:
space:
mode:
authorVille Voutilainen <ville.voutilainen@gmail.com>2017-10-30 16:31:04 +0200
committerVille Voutilainen <ville@gcc.gnu.org>2017-10-30 16:31:04 +0200
commitccbbf8df05abc41ef86565706976c5ad403291e7 (patch)
treed9ab403161f04d2276aeaef0e7aa163807d1e15a /libstdc++-v3/include/std/array
parent198a8e3cc5176e9234343060fe95de4035d23ac3 (diff)
downloadgcc-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/array8
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