diff options
author | Daniel Frey <d.frey@gmx.de> | 2010-01-22 20:50:15 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2010-01-22 20:50:15 +0000 |
commit | 0d9709e1bf2b6e4842307575422563c43955373a (patch) | |
tree | a962efb4f23493e40cd7f242cc88c614c715fa61 | |
parent | c47987fa5b5a3b1b72ef9047ebc48c0041479656 (diff) | |
download | gcc-0d9709e1bf2b6e4842307575422563c43955373a.zip gcc-0d9709e1bf2b6e4842307575422563c43955373a.tar.gz gcc-0d9709e1bf2b6e4842307575422563c43955373a.tar.bz2 |
functional (_Index_tuple, [...]): Simplify and speed-up.
2010-01-22 Daniel Frey <d.frey@gmx.de>
* include/std/functional (_Index_tuple, _Build_index_tuple):
Simplify and speed-up.
From-SVN: r156178
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | 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 <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 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<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; }; /** |