From 0d9709e1bf2b6e4842307575422563c43955373a Mon Sep 17 00:00:00 2001 From: Daniel Frey Date: Fri, 22 Jan 2010 20:50:15 +0000 Subject: [PATCH] functional (_Index_tuple, [...]): Simplify and speed-up. 2010-01-22 Daniel Frey * include/std/functional (_Index_tuple, _Build_index_tuple): Simplify and speed-up. From-SVN: r156178 --- libstdc++-v3/ChangeLog | 5 +++++ libstdc++-v3/include/std/functional | 24 ++++++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index bfdf16a..28db3d7 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2010-01-22 Daniel Frey + + * include/std/functional (_Index_tuple, _Build_index_tuple): + Simplify and speed-up. + 2010-01-22 Joern Rennecke PR libstdc++/36101, PR libstdc++/42813 diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional index f28490a..68b7842 100644 --- a/libstdc++-v3/include/std/functional +++ b/libstdc++-v3/include/std/functional @@ -847,22 +847,22 @@ namespace std * in a tuple. */ template - struct _Index_tuple { }; + struct _Index_tuple + { + typedef _Index_tuple<_Indexes..., sizeof...(_Indexes)> __next; + }; /// Builds an _Index_tuple<0, 1, 2, ..., _Num-1>. - template > - struct _Build_index_tuple; - - template - struct _Build_index_tuple<_Num, _Index_tuple<_Indexes...> > - : _Build_index_tuple<_Num - 1, - _Index_tuple<_Indexes..., sizeof...(_Indexes)> > - { }; + template + struct _Build_index_tuple + { + typedef typename _Build_index_tuple<_Num-1>::__type::__next __type; + }; - template - struct _Build_index_tuple<0, _Index_tuple<_Indexes...> > + template<> + struct _Build_index_tuple<0> { - typedef _Index_tuple<_Indexes...> __type; + typedef _Index_tuple<> __type; }; /** -- 2.7.4