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
This commit is contained in:
Daniel Frey 2010-01-22 20:50:15 +00:00 committed by Paolo Carlini
parent c47987fa5b
commit 0d9709e1bf
2 changed files with 18 additions and 13 deletions

View 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

View 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<int... _Indexes>
struct _Build_index_tuple<0, _Index_tuple<_Indexes...> >
template<std::size_t _Num>
struct _Build_index_tuple
{
typedef _Index_tuple<_Indexes...> __type;
typedef typename _Build_index_tuple<_Num-1>::__type::__next __type;
};
template<>
struct _Build_index_tuple<0>
{
typedef _Index_tuple<> __type;
};
/**