diff options
author | John Bytheway <jbytheway@gmail.com> | 2009-10-05 17:56:02 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2009-10-05 17:56:02 +0000 |
commit | cadd2a9cb3444d77552e920f3095223813b7b85e (patch) | |
tree | a1dfb0d0e903427470550aa255085b5a1b20c977 | |
parent | 8c32d1e0093d3196390e9fa55f94bf8a35212b85 (diff) | |
download | gcc-cadd2a9cb3444d77552e920f3095223813b7b85e.zip gcc-cadd2a9cb3444d77552e920f3095223813b7b85e.tar.gz gcc-cadd2a9cb3444d77552e920f3095223813b7b85e.tar.bz2 |
re PR libstdc++/41530 ([c++0x] Cannot move-construct std::tuple from a different type of std::tuple)
2009-10-05 John Bytheway <jbytheway@gmail.com>
PR libstdc++/41530
* include/std/tuple (_Tuple_impl<>::_Tuple_impl(_Tuple_impl<>&&)):
Fix to just move.
* testsuite/20_util/tuple/cons/41530.cc: New.
From-SVN: r152461
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/std/tuple | 3 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc | 34 |
3 files changed, 42 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 1466b04..3511b4f 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2009-10-05 John Bytheway <jbytheway@gmail.com> + + PR libstdc++/41530 + * include/std/tuple (_Tuple_impl<>::_Tuple_impl(_Tuple_impl<>&&)): + Fix to just move. + * testsuite/20_util/tuple/cons/41530.cc: New. + 2009-10-05 Phil Muldoon <pmuldoon@redhat.com> * doc/xml/manual/debug.xml: Add narrative for GDB Python pretty diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple index 18cd89b..1c46852 100644 --- a/libstdc++-v3/include/std/tuple +++ b/libstdc++-v3/include/std/tuple @@ -174,8 +174,7 @@ namespace std template<typename... _UElements> _Tuple_impl(_Tuple_impl<_Idx, _UElements...>&& __in) : _Inherited(std::move(__in._M_tail())), - _Base(std::forward<typename _Tuple_impl<_Idx, _UElements...>:: - _Base>(__in._M_head())) { } + _Base(std::move(__in._M_head())) { } _Tuple_impl& operator=(const _Tuple_impl& __in) diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc new file mode 100644 index 0000000..6bd405c --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc @@ -0,0 +1,34 @@ +// { dg-options "-std=gnu++0x" } +// { dg-do compile } + +// Copyright (C) 2009 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 3, 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 COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// Tuple + +#include <tuple> + +class A {}; +class B : public A {}; + +// PR libstdc++/41530 +void test01() +{ + std::tuple<B*> b; + std::tuple<A*> a1(b); + std::tuple<A*> a2(std::move(b)); +} |