diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-09-29 17:42:42 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-09-29 17:42:42 +0000 |
commit | c2c4436e9cf2375b3e75b46df23eda9574ae556b (patch) | |
tree | 55dc26dc919328882e2de09ee91581205e178a6b /libstdc++-v3 | |
parent | de36b326151d6ef13062f1c6d68b45d95c0dcb3d (diff) | |
download | gcc-c2c4436e9cf2375b3e75b46df23eda9574ae556b.tar.gz |
2005-09-29 Chris Jefferson <chris@bubblescope.net>
PR libstdc++/23978
* include/tr1/functional (ref, cref): Make inline.
* include/tr1/tuple_iterate.h (tuple): Add operator=(std::pair).
(tie): Correct formatting.
(make_tuple): Make inline.
* testsuite/tr1/6_containers/tuple/creation_functions/23978.cc: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104784 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 9 | ||||
-rw-r--r-- | libstdc++-v3/include/tr1/functional | 10 | ||||
-rw-r--r-- | libstdc++-v3/include/tr1/tuple_iterate.h | 23 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/23978.cc | 47 |
4 files changed, 77 insertions, 12 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 59624138ed4..dc5da153bd5 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2005-09-29 Chris Jefferson <chris@bubblescope.net> + + PR libstdc++/23978 + * include/tr1/functional (ref, cref): Make inline. + * include/tr1/tuple_iterate.h (tuple): Add operator=(std::pair). + (tie): Correct formatting. + (make_tuple): Make inline. + * testsuite/tr1/6_containers/tuple/creation_functions/23978.cc: New. + 2005-09-25 Benjamin Kosnik <bkoz@redhat.com> Eric Botcazou <ebotcazou@libertysurf.fr> diff --git a/libstdc++-v3/include/tr1/functional b/libstdc++-v3/include/tr1/functional index 6b197d83700..76eb87a0bb5 100644 --- a/libstdc++-v3/include/tr1/functional +++ b/libstdc++-v3/include/tr1/functional @@ -372,22 +372,24 @@ namespace tr1 // Denotes a reference should be taken to a variable. template<typename _Tp> - reference_wrapper<_Tp> + inline reference_wrapper<_Tp> ref(_Tp& __t) { return reference_wrapper<_Tp>(__t); } // Denotes a const reference should be taken to a variable. template<typename _Tp> - reference_wrapper<const _Tp> + inline reference_wrapper<const _Tp> cref(const _Tp& __t) { return reference_wrapper<const _Tp>(__t); } template<typename _Tp> - reference_wrapper<_Tp> ref(reference_wrapper<_Tp> __t) + inline reference_wrapper<_Tp> + ref(reference_wrapper<_Tp> __t) { return ref(__t.get()); } template<typename _Tp> - reference_wrapper<const _Tp> cref(reference_wrapper<_Tp> __t) + inline reference_wrapper<const _Tp> + cref(reference_wrapper<_Tp> __t) { return cref(__t.get()); } template<typename _Tp, bool> diff --git a/libstdc++-v3/include/tr1/tuple_iterate.h b/libstdc++-v3/include/tr1/tuple_iterate.h index dbfa42b7491..2bf7d3e22d5 100644 --- a/libstdc++-v3/include/tr1/tuple_iterate.h +++ b/libstdc++-v3/include/tr1/tuple_iterate.h @@ -53,11 +53,18 @@ template<_GLIBCXX_TEMPLATE_PARAMS> { } #if _GLIBCXX_NUM_ARGS == 2 -template<class _U1, class _U2> - tuple(const std::pair<_U1, _U2>& __u): - _M_arg1(__u.first), _M_arg2(__u.second) - { } + template<typename _U1, typename _U2> + tuple(const std::pair<_U1, _U2>& __u) : + _M_arg1(__u.first), _M_arg2(__u.second) + { } + template<typename _U1, typename _U2> + tuple& + operator=(const std::pair<_U1, _U2>& __u) + { + _M_arg1 = __u.first; + _M_arg2 = __u.second; + } #endif #if _GLIBCXX_NUM_ARGS > 0 @@ -137,14 +144,14 @@ tuple<> inline make_tuple() { return tuple<>(); } -inline tuple<> -tie() +tuple<> +inline tie() { return tuple<>(); } #else template<_GLIBCXX_TEMPLATE_PARAMS> typename __stripped_tuple_type<_GLIBCXX_TEMPLATE_ARGS>::__type - make_tuple(_GLIBCXX_PARAMS) + inline make_tuple(_GLIBCXX_PARAMS) { return typename __stripped_tuple_type<_GLIBCXX_TEMPLATE_ARGS>:: __type(_GLIBCXX_ARGS); @@ -152,7 +159,7 @@ template<_GLIBCXX_TEMPLATE_PARAMS> template<_GLIBCXX_TEMPLATE_PARAMS> tuple<_GLIBCXX_REF_TEMPLATE_ARGS> - tie(_GLIBCXX_REF_PARAMS) + inline tie(_GLIBCXX_REF_PARAMS) { return make_tuple(_GLIBCXX_REF_WRAP_PARAMS); } #endif diff --git a/libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/23978.cc b/libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/23978.cc new file mode 100644 index 00000000000..2c94f3314dd --- /dev/null +++ b/libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/23978.cc @@ -0,0 +1,47 @@ +// 2005-09-29 Chris Jefferson <chris@bubblescope.net> +// +// Copyright (C) 2005 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// Tuple + +#include <tr1/tuple> +#include <tr1/utility> +#include <testsuite_hooks.h> + +using namespace std; +using namespace tr1; + +// libstdc++/23978 +void test01() +{ + bool test __attribute__((unused)) = true; + + pair<int, int> p(1, 2); + int x = 0; + int y = 0; + tie(x, y) = p; + VERIFY( x == 1 && y == 2 ); +} + +int +main() +{ + test01(); + return 0; +} |