aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Frey <d.frey@gmx.de>2010-01-22 20:50:15 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2010-01-22 20:50:15 +0000
commit0d9709e1bf2b6e4842307575422563c43955373a (patch)
treea962efb4f23493e40cd7f242cc88c614c715fa61
parentc47987fa5b5a3b1b72ef9047ebc48c0041479656 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--libstdc++-v3/include/std/functional24
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;
};
/**