OSDN Git Service

2010-08-06 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Aug 2010 14:46:08 +0000 (14:46 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Aug 2010 14:46:08 +0000 (14:46 +0000)
* include/std/tuple (pack_arguments): Rename to forward_as_tuple
and simplify, per US 98 and US 99.
* testsuite/20_util/tuple/creation_functions/pack_arguments.cc:
Rename to...
* testsuite/20_util/tuple/creation_functions/forward_as_tuple.cc:
... this, adjust.
* testsuite/20_util/pair/piecewise.cc: Adjust.

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

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/tuple
libstdc++-v3/testsuite/20_util/pair/piecewise.cc
libstdc++-v3/testsuite/20_util/tuple/creation_functions/forward_as_tuple.cc [moved from libstdc++-v3/testsuite/20_util/tuple/creation_functions/pack_arguments.cc with 87% similarity]

index ab4b694..9690a7e 100644 (file)
@@ -1,5 +1,15 @@
 2010-08-06  Paolo Carlini  <paolo.carlini@oracle.com>
 
+       * include/std/tuple (pack_arguments): Rename to forward_as_tuple
+       and simplify, per US 98 and US 99.
+       * testsuite/20_util/tuple/creation_functions/pack_arguments.cc:
+       Rename to...
+       * testsuite/20_util/tuple/creation_functions/forward_as_tuple.cc:
+       ... this, adjust.
+       * testsuite/20_util/pair/piecewise.cc: Adjust.
+
+2010-08-06  Paolo Carlini  <paolo.carlini@oracle.com>
+
        * include/std/tuple (begin, end): Remove per GB 87.
        * testsuite/20_util/tuple/range_access.cc: Remove.
 
index 8b2252e..2e35241 100644 (file)
@@ -549,27 +549,10 @@ namespace std
       return __result_type(std::forward<_Elements>(__args)...);
     }
 
-  template<typename _Tp, bool = is_array<_Tp>::value>
-    struct __pa_add_rvalue_reference_helper
-    { typedef typename std::add_rvalue_reference<_Tp>::type __type; };
-
-  template<typename _Tp>
-    struct __pa_add_rvalue_reference_helper<_Tp, true>
-    { typedef _Tp& __type; };
-
-  template<typename _Tp>
-    struct __pa_add_rvalue_reference
-    : public __pa_add_rvalue_reference_helper<_Tp>
-    { };
-
   template<typename... _Elements>
-    inline tuple<typename __pa_add_rvalue_reference<_Elements>::__type...>
-    pack_arguments(_Elements&&... __args)
-    {
-      typedef tuple<typename __pa_add_rvalue_reference<_Elements>::__type...>
-       __result_type;
-      return __result_type(std::forward<_Elements>(__args)...);
-    }
+    inline tuple<_Elements&&...>
+    forward_as_tuple(_Elements&&... __args)
+    { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); }
 
   template<std::size_t...> struct __index_holder { };    
 
index 3844e1b..ef71473 100644 (file)
@@ -70,21 +70,21 @@ void test01()
   bool test __attribute__((unused)) = true;
 
   std::pair<type_one, type_zero> pp0(std::piecewise_construct_t(),
-                                    std::pack_arguments(-3),
-                                    std::pack_arguments());
+                                    std::forward_as_tuple(-3),
+                                    std::forward_as_tuple());
   VERIFY( pp0.first.get() == -3 );
   VERIFY( pp0.second.get() == 757 );
 
   std::pair<type_one, type_two> pp1(std::piecewise_construct_t(),
-                                   std::pack_arguments(6),
-                                   std::pack_arguments(5, 4));
+                                   std::forward_as_tuple(6),
+                                   std::forward_as_tuple(5, 4));
   VERIFY( pp1.first.get() == 6 );
   VERIFY( pp1.second.get1() == 5 );
   VERIFY( pp1.second.get2() == 4 );
 
   std::pair<type_two, type_two> pp2(std::piecewise_construct_t(),
-                                   std::pack_arguments(2, 1),
-                                   std::pack_arguments(-1, -3));
+                                   std::forward_as_tuple(2, 1),
+                                   std::forward_as_tuple(-1, -3));
   VERIFY( pp2.first.get1() == 2 );
   VERIFY( pp2.first.get2() == 1 );
   VERIFY( pp2.second.get1() == -1 );
@@ -30,16 +30,16 @@ test01()
 {
   bool test __attribute__((unused)) = true;
 
-  std::pack_arguments();
+  std::forward_as_tuple();
 
-  VERIFY( std::get<0>(std::pack_arguments(-1)) == -1 );
-  VERIFY( (std::is_same<decltype(std::pack_arguments(-1)),
+  VERIFY( std::get<0>(std::forward_as_tuple(-1)) == -1 );
+  VERIFY( (std::is_same<decltype(std::forward_as_tuple(-1)),
           std::tuple<int&&>>::value) );
 
   const int i1 = 1;
   const int i2 = 2;
   const double d1 = 4.0;
-  auto t1 = std::pack_arguments(i1, i2, d1);
+  auto t1 = std::forward_as_tuple(i1, i2, d1);
   VERIFY( (std::is_same<decltype(t1), std::tuple<const int&,
           const int&, const double&>>::value) );
   VERIFY( std::get<0>(t1) == i1 );
@@ -48,7 +48,7 @@ test01()
 
   typedef const int a_type1[3];
   a_type1 a1 = { -1, 1, 2 };
-  auto t2 = std::pack_arguments(a1);
+  auto t2 = std::forward_as_tuple(a1);
   VERIFY( (std::is_same<decltype(t2), std::tuple<a_type1&>>::value) );
   VERIFY( std::get<0>(t2)[0] == a1[0] );
   VERIFY( std::get<0>(t2)[1] == a1[1] );
@@ -57,7 +57,7 @@ test01()
   typedef int a_type2[2];
   a_type2 a2 = { 2, -2 };
   volatile int i4 = 1;
-  auto t3 = std::pack_arguments(a2, i4);
+  auto t3 = std::forward_as_tuple(a2, i4);
   VERIFY( (std::is_same<decltype(t3), std::tuple<a_type2&,
           volatile int&>>::value) );
   VERIFY( std::get<0>(t3)[0] == a2[0] );