* include/std/tuple (__is_tuple_like_impl): Disambiguate array in
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Jun 2015 23:22:19 +0000 (23:22 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Jun 2015 23:22:19 +0000 (23:22 +0000)
debug and profile modes.
* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Adjust tests
for swap in C++11 and later.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224397 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/tuple
libstdc++-v3/testsuite/25_algorithms/headers/algorithm/synopsis.cc

index 4335a25..91a5d88 100644 (file)
@@ -1,3 +1,10 @@
+2015-06-12  Jonathan Wakely  <jwakely@redhat.com>
+
+       * include/std/tuple (__is_tuple_like_impl): Disambiguate array in
+       debug and profile modes.
+       * testsuite/25_algorithms/headers/algorithm/synopsis.cc: Adjust tests
+       for swap in C++11 and later.
+
 2015-06-09  Jonathan Wakely  <jwakely@redhat.com>
 
        PR libstdc++/66030
index ccea02b..953d16b 100644 (file)
@@ -989,7 +989,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { };
 
   template<typename _Tp, std::size_t _Nm>
-    struct __is_tuple_like_impl<array<_Tp, _Nm>> : true_type
+    struct __is_tuple_like_impl<_GLIBCXX_STD_C::array<_Tp, _Nm>> : true_type
     { };
 
   // Internal type trait that allows us to sfinae-protect tuple_cat.
index 4758796..7b11872 100644 (file)
@@ -136,14 +136,18 @@ namespace std
     copy_backward (_BIter1, _BIter1, _BIter2);
 
   // 25.2.2, swap:
+#if __cplusplus < 201103L
   template<typename _Tp> 
     void 
     swap(_Tp&, _Tp& b);
 
-#if __cplusplus >= 201103L
   template<typename _Tp, size_t _Nm>
     void
     swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
+#else
+  // C++11 swap() has complicated SFINAE constraints, test signatures like so:
+  void (*swap_scalars)(int&, int&) = &swap;
+  void (*swap_arrays)(int(&)[5], int(&)[5]) = &swap;
 #endif
 
   template<typename _FIter1, typename _FIter2>