aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2012-11-17 12:09:58 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2012-11-17 12:09:58 +0000
commit741aacafff79e60410d224b72bae6364f2c3c40c (patch)
tree7cc8c0562fe9d7735677346600fbc8cc7c4d0b05
parent566fb011d11f447798bf815f2967d7e33fc3a197 (diff)
downloadgcc-741aacafff79e60410d224b72bae6364f2c3c40c.zip
gcc-741aacafff79e60410d224b72bae6364f2c3c40c.tar.gz
gcc-741aacafff79e60410d224b72bae6364f2c3c40c.tar.bz2
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
-rw-r--r--libstdc++-v3/ChangeLog10
-rw-r--r--libstdc++-v3/include/std/array49
-rw-r--r--libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc6
-rw-r--r--libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc2
4 files changed, 42 insertions, 25 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 9be305b..a2933c5 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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>
* include/bits/hashtable_policy.h (_Prime_rehash_policy): Remove
diff --git a/libstdc++-v3/include/std/array b/libstdc++-v3/include/std/array
index 00d3123..a4ecf5a 100644
--- a/libstdc++-v3/include/std/array
+++ b/libstdc++-v3/include/std/array
@@ -263,27 +263,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
noexcept(noexcept(__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>
constexpr _Tp&
get(array<_Tp, _Nm>& __arr) noexcept
@@ -313,6 +292,34 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
_GLIBCXX_END_NAMESPACE_CONTAINER
} // 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
# include <debug/array>
#endif
diff --git a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
index 5df2f0f..5c39534 100644
--- a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
@@ -28,6 +28,6 @@ int n1 = std::get<1>(a);
int n2 = std::get<1>(std::move(a));
int n3 = std::get<1>(ca);
-// { dg-error "static assertion failed" "" { target *-*-* } 291 }
-// { dg-error "static assertion failed" "" { target *-*-* } 300 }
-// { dg-error "static assertion failed" "" { target *-*-* } 308 }
+// { dg-error "static assertion failed" "" { target *-*-* } 270 }
+// { dg-error "static assertion failed" "" { target *-*-* } 279 }
+// { dg-error "static assertion failed" "" { target *-*-* } 287 }
diff --git a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
index 33c6090b..91fc328 100644
--- a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
@@ -23,4 +23,4 @@
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 }