diff options
author | Paolo Carlini <pcarlini@suse.de> | 2006-10-30 22:22:38 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2006-10-30 22:22:38 +0000 |
commit | c8bf5b7c54d47b7a25f9fed4d3772c8ae2e2bfde (patch) | |
tree | a04b7c494980daf1e707842254071519f28eb9a0 | |
parent | 771e6d83c98294c36cc189e7912b53a6658f5438 (diff) | |
download | gcc-c8bf5b7c54d47b7a25f9fed4d3772c8ae2e2bfde.zip gcc-c8bf5b7c54d47b7a25f9fed4d3772c8ae2e2bfde.tar.gz gcc-c8bf5b7c54d47b7a25f9fed4d3772c8ae2e2bfde.tar.bz2 |
tuple_iterate.h (tuple_size<tuple<> >::value): Provide definition.
2006-10-30 Paolo Carlini <pcarlini@suse.de>
* include/tr1/tuple_iterate.h (tuple_size<tuple<> >::value): Provide
definition.
* include/tr1/functional (is_bind_expression<>::value,
is_placeholder<>::value, + various partial specializations): Likewise.
* include/tr1/array (tuple_size<array<> >::value): Likewise.
From-SVN: r118203
-rw-r--r-- | libstdc++-v3/ChangeLog | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/tr1/array | 3 | ||||
-rw-r--r-- | libstdc++-v3/include/tr1/functional | 39 | ||||
-rw-r--r-- | libstdc++-v3/include/tr1/tuple_iterate.h | 7 |
4 files changed, 39 insertions, 18 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index d766ecf..21f8030 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,13 @@ 2006-10-30 Paolo Carlini <pcarlini@suse.de> + * include/tr1/tuple_iterate.h (tuple_size<tuple<> >::value): Provide + definition. + * include/tr1/functional (is_bind_expression<>::value, + is_placeholder<>::value, + various partial specializations): Likewise. + * include/tr1/array (tuple_size<array<> >::value): Likewise. + +2006-10-30 Paolo Carlini <pcarlini@suse.de> + * testsuite/tr1/6_containers/array/capacity/max_size.cc: Actually do test max_size(). diff --git a/libstdc++-v3/include/tr1/array b/libstdc++-v3/include/tr1/array index 4389874..1afd7db 100644 --- a/libstdc++-v3/include/tr1/array +++ b/libstdc++-v3/include/tr1/array @@ -243,6 +243,9 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) struct tuple_size<array<_Tp, _Nm> > { static const int value = _Nm; }; + template<typename _Tp, std::size_t _Nm> + const int tuple_size<array<_Tp, _Nm> >::value; + template<int _Int, typename _Tp, std::size_t _Nm> struct tuple_element<_Int, array<_Tp, _Nm> > { typedef _Tp type; }; diff --git a/libstdc++-v3/include/tr1/functional b/libstdc++-v3/include/tr1/functional index ef85e5b..44d9154 100644 --- a/libstdc++-v3/include/tr1/functional +++ b/libstdc++-v3/include/tr1/functional @@ -514,9 +514,10 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) */ template<typename _Tp> struct is_bind_expression - { - static const bool value = false; - }; + { static const bool value = false; }; + + template<typename _Tp> + const bool is_bind_expression<_Tp>::value; /** * @brief Determines if the given type _Tp is a placeholder in a @@ -524,9 +525,10 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) */ template<typename _Tp> struct is_placeholder - { - static const int value = 0; - }; + { static const int value = 0; }; + + template<typename _Tp> + const int is_placeholder<_Tp>::value; /** * @if maint @@ -543,9 +545,10 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) */ template<int _Num> struct is_placeholder<_Placeholder<_Num> > - { - static const int value = _Num; - }; + { static const int value = _Num; }; + + template<int _Num> + const int is_placeholder<_Placeholder<_Num> >::value; /** * @if maint @@ -714,10 +717,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) * @endif */ template<typename _Signature> - struct is_bind_expression<_Bind<_Signature> > - { - static const bool value = true; - }; + struct is_bind_expression<_Bind<_Signature> > + { static const bool value = true; }; + + template<typename _Signature> + const bool is_bind_expression<_Bind<_Signature> >::value; /** * @if maint @@ -725,10 +729,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) * @endif */ template<typename _Result, typename _Signature> - struct is_bind_expression<_Bind_result<_Result, _Signature> > - { - static const bool value = true; - }; + struct is_bind_expression<_Bind_result<_Result, _Signature> > + { static const bool value = true; }; + + template<typename _Result, typename _Signature> + const bool is_bind_expression<_Bind_result<_Result, _Signature> >::value; /** * @brief Exception class thrown when class template function's diff --git a/libstdc++-v3/include/tr1/tuple_iterate.h b/libstdc++-v3/include/tr1/tuple_iterate.h index 8d57576..da6166e 100644 --- a/libstdc++-v3/include/tr1/tuple_iterate.h +++ b/libstdc++-v3/include/tr1/tuple_iterate.h @@ -1,6 +1,6 @@ // class template tuple -*- C++ -*- -// Copyright (C) 2004, 2005 Free Software Foundation, Inc. +// Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -39,6 +39,11 @@ template<_GLIBCXX_TEMPLATE_PARAMS> struct tuple_size<tuple<_GLIBCXX_TEMPLATE_ARGS> > { static const int value = _GLIBCXX_NUM_ARGS; }; +#if _GLIBCXX_NUM_ARGS > 0 +template<_GLIBCXX_TEMPLATE_PARAMS> + const int tuple_size<tuple<_GLIBCXX_TEMPLATE_ARGS> >::value; +#endif + template<_GLIBCXX_TEMPLATE_PARAMS> #ifdef _GLIBCXX_LAST_INCLUDE class tuple |