OSDN Git Service

2010-01-22 Daniel Frey <d.frey@gmx.de>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Jan 2010 20:50:15 +0000 (20:50 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Jan 2010 20:50:15 +0000 (20:50 +0000)
* include/std/functional (_Index_tuple, _Build_index_tuple):
Simplify and speed-up.

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

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/functional

index bfdf16a..28db3d7 100644 (file)
@@ -1,3 +1,8 @@
+2010-01-22  Daniel Frey  <d.frey@gmx.de>
+
+       * include/std/functional (_Index_tuple, _Build_index_tuple):
+       Simplify and speed-up.
+
 2010-01-22  Joern Rennecke  <amylaar@spamcop.net>
 
        PR libstdc++/36101, PR libstdc++/42813
index f28490a..68b7842 100644 (file)
@@ -847,22 +847,22 @@ namespace std
    * in a tuple. 
    */
   template<int... _Indexes>
-    struct _Index_tuple { };
+    struct _Index_tuple
+    {
+      typedef _Index_tuple<_Indexes..., sizeof...(_Indexes)> __next;
+    };
 
   /// Builds an _Index_tuple<0, 1, 2, ..., _Num-1>.
-  template<std::size_t _Num, typename _Tuple = _Index_tuple<> >
-    struct _Build_index_tuple;
-  template<std::size_t _Num, int... _Indexes> 
-    struct _Build_index_tuple<_Num, _Index_tuple<_Indexes...> >
-    : _Build_index_tuple<_Num - 1, 
-                         _Index_tuple<_Indexes..., sizeof...(_Indexes)> >
-    { };
+  template<std::size_t _Num>
+    struct _Build_index_tuple
+    {
+      typedef typename _Build_index_tuple<_Num-1>::__type::__next __type;
+    };
 
-  template<int... _Indexes>
-    struct _Build_index_tuple<0, _Index_tuple<_Indexes...> >
+  template<>
+    struct _Build_index_tuple<0>
     {
-      typedef _Index_tuple<_Indexes...> __type;
+      typedef _Index_tuple<> __type;
     };
 
   /**