re PR libstdc++/55363 (tuple_size is not a class template)
2012-11-17 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/55363 * include/std/array (tuple_size, tuple_element): Move out NAMESPACE_CONTAINER. * testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust dg-error line numbers. * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc: Likewise. From-SVN: r193584
This commit is contained in:
parent
566fb011d1
commit
741aacafff
4 changed files with 42 additions and 25 deletions
|
@ -1,3 +1,13 @@
|
||||||
|
2012-11-17 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
PR libstdc++/55363
|
||||||
|
* include/std/array (tuple_size, tuple_element): Move out
|
||||||
|
NAMESPACE_CONTAINER.
|
||||||
|
* testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust
|
||||||
|
dg-error line numbers.
|
||||||
|
* testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
|
||||||
|
Likewise.
|
||||||
|
|
||||||
2012-11-16 François Dumont <fdumont@gcc.gnu.org>
|
2012-11-16 François Dumont <fdumont@gcc.gnu.org>
|
||||||
|
|
||||||
* include/bits/hashtable_policy.h (_Prime_rehash_policy): Remove
|
* include/bits/hashtable_policy.h (_Prime_rehash_policy): Remove
|
||||||
|
|
|
@ -263,27 +263,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
noexcept(noexcept(__one.swap(__two)))
|
noexcept(noexcept(__one.swap(__two)))
|
||||||
{ __one.swap(__two); }
|
{ __one.swap(__two); }
|
||||||
|
|
||||||
// Tuple interface to class template array.
|
|
||||||
|
|
||||||
/// tuple_size
|
|
||||||
template<typename _Tp>
|
|
||||||
class tuple_size;
|
|
||||||
|
|
||||||
template<typename _Tp, std::size_t _Nm>
|
|
||||||
struct tuple_size<array<_Tp, _Nm>>
|
|
||||||
: public integral_constant<std::size_t, _Nm> { };
|
|
||||||
|
|
||||||
/// tuple_element
|
|
||||||
template<std::size_t _Int, typename _Tp>
|
|
||||||
class tuple_element;
|
|
||||||
|
|
||||||
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
|
|
||||||
struct tuple_element<_Int, array<_Tp, _Nm>>
|
|
||||||
{
|
|
||||||
static_assert(_Int < _Nm, "index is out of bounds");
|
|
||||||
typedef _Tp type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
|
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
|
||||||
constexpr _Tp&
|
constexpr _Tp&
|
||||||
get(array<_Tp, _Nm>& __arr) noexcept
|
get(array<_Tp, _Nm>& __arr) noexcept
|
||||||
|
@ -313,6 +292,34 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
_GLIBCXX_END_NAMESPACE_CONTAINER
|
_GLIBCXX_END_NAMESPACE_CONTAINER
|
||||||
} // namespace std
|
} // namespace std
|
||||||
|
|
||||||
|
namespace std _GLIBCXX_VISIBILITY(default)
|
||||||
|
{
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
|
|
||||||
|
// Tuple interface to class template array.
|
||||||
|
|
||||||
|
/// tuple_size
|
||||||
|
template<typename _Tp>
|
||||||
|
class tuple_size;
|
||||||
|
|
||||||
|
template<typename _Tp, std::size_t _Nm>
|
||||||
|
struct tuple_size<_GLIBCXX_STD_C::array<_Tp, _Nm>>
|
||||||
|
: public integral_constant<std::size_t, _Nm> { };
|
||||||
|
|
||||||
|
/// tuple_element
|
||||||
|
template<std::size_t _Int, typename _Tp>
|
||||||
|
class tuple_element;
|
||||||
|
|
||||||
|
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
|
||||||
|
struct tuple_element<_Int, _GLIBCXX_STD_C::array<_Tp, _Nm>>
|
||||||
|
{
|
||||||
|
static_assert(_Int < _Nm, "index is out of bounds");
|
||||||
|
typedef _Tp type;
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE_VERSION
|
||||||
|
} // namespace std
|
||||||
|
|
||||||
#ifdef _GLIBCXX_DEBUG
|
#ifdef _GLIBCXX_DEBUG
|
||||||
# include <debug/array>
|
# include <debug/array>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -28,6 +28,6 @@ int n1 = std::get<1>(a);
|
||||||
int n2 = std::get<1>(std::move(a));
|
int n2 = std::get<1>(std::move(a));
|
||||||
int n3 = std::get<1>(ca);
|
int n3 = std::get<1>(ca);
|
||||||
|
|
||||||
// { dg-error "static assertion failed" "" { target *-*-* } 291 }
|
// { dg-error "static assertion failed" "" { target *-*-* } 270 }
|
||||||
// { dg-error "static assertion failed" "" { target *-*-* } 300 }
|
// { dg-error "static assertion failed" "" { target *-*-* } 279 }
|
||||||
// { dg-error "static assertion failed" "" { target *-*-* } 308 }
|
// { dg-error "static assertion failed" "" { target *-*-* } 287 }
|
||||||
|
|
|
@ -23,4 +23,4 @@
|
||||||
|
|
||||||
typedef std::tuple_element<1, std::array<int, 1>>::type type;
|
typedef std::tuple_element<1, std::array<int, 1>>::type type;
|
||||||
|
|
||||||
// { dg-error "static assertion failed" "" { target *-*-* } 283 }
|
// { dg-error "static assertion failed" "" { target *-*-* } 316 }
|
||||||
|
|
Loading…
Add table
Reference in a new issue