Commit d385563f by Paolo Carlini Committed by Paolo Carlini

re PR libstdc++/42352 (-std=c++0x reference binding problem)

2009-12-11  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/42352
	* include/bits/list.tcc (sort): Use _GLIBCXX_MOVE for list::splice
	and list::merge calls.
	* testsuite/23_containers/list/operations/42352.cc: New.

From-SVN: r155180
parent dcea1b2f
2009-12-11 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/42352
* include/bits/list.tcc (sort): Use _GLIBCXX_MOVE for list::splice
and list::merge calls.
* testsuite/23_containers/list/operations/42352.cc: New.
2009-12-11 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/22634, DR 539 [Ready]
* include/bits/stl_numeric.h (adjacent_difference): Use std::move
at the end of the loop body, per the Ready resolution.
......
......@@ -312,13 +312,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
do
{
__carry.splice(__carry.begin(), *this, begin());
__carry.splice(__carry.begin(), _GLIBCXX_MOVE(*this), begin());
for(__counter = &__tmp[0];
__counter != __fill && !__counter->empty();
++__counter)
{
__counter->merge(__carry);
__counter->merge(_GLIBCXX_MOVE(__carry));
__carry.swap(*__counter);
}
__carry.swap(*__counter);
......@@ -328,7 +328,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
while ( !empty() );
for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
__counter->merge(*(__counter - 1));
__counter->merge(_GLIBCXX_MOVE(*(__counter - 1)));
swap( *(__fill - 1) );
}
}
......@@ -389,13 +389,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
do
{
__carry.splice(__carry.begin(), *this, begin());
__carry.splice(__carry.begin(), _GLIBCXX_MOVE(*this), begin());
for(__counter = &__tmp[0];
__counter != __fill && !__counter->empty();
++__counter)
{
__counter->merge(__carry, __comp);
__counter->merge(_GLIBCXX_MOVE(__carry), __comp);
__carry.swap(*__counter);
}
__carry.swap(*__counter);
......@@ -405,7 +405,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
while ( !empty() );
for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
__counter->merge(*(__counter - 1), __comp);
__counter->merge(_GLIBCXX_MOVE(*(__counter - 1)), __comp);
swap(*(__fill - 1));
}
}
......
// { dg-options "-std=gnu++0x" }
// 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 Pred 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/>.
#include <list>
#include <testsuite_hooks.h>
// PR libstdc++/42352
void test01()
{
bool test __attribute__((unused)) = true;
std::list<int> l{3, 2, 4, 1, 5, 9, 0, 8, 6, 7};
l.sort();
for (auto it = l.begin(); it != l.end(); ++it)
{
static int nn = 0;
VERIFY( *it == nn++ );
}
}
void test02()
{
bool test __attribute__((unused)) = true;
std::list<int> l{3, 2, 4, 1, 5, 9, 0, 8, 6, 7};
struct compare
{
bool
operator()(int const& one, int const& two) const
{ return one > two; }
};
l.sort(compare());
for (auto it = l.begin(); it != l.end(); ++it)
{
static int nn = 9;
VERIFY( *it == nn-- );
}
}
int main()
{
test01();
test02();
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment