Commit d2f2f2e3 by François Dumont

2013-04-26 François Dumont <fdumont@gcc.gnu.org>

	* include/bits/hashtable_policy.h
	(_Insert_base<>::insert<_It>(_It, _It)): Enable move semantics.
	* testsuite/23_containers/unordered_set/insert/move_range.cc: New.

From-SVN: r198346
parent 2c62cbaa
2013-04-26 François Dumont <fdumont@gcc.gnu.org>
* include/bits/hashtable_policy.h
(_Insert_base<>::insert<_It>(_It, _It)): Enable move semantics.
* testsuite/23_containers/unordered_set/insert/move_range.cc: New.
2013-04-26 Paolo Carlini <paolo.carlini@oracle.com>
* include/c_global/cstdio (gets): Provide only in C++98 and C++11.
......
......@@ -665,7 +665,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__h._M_rehash(__do_rehash.second, __saved_state);
for (; __first != __last; ++__first)
this->insert(*__first);
__h._M_insert(*__first, __unique_keys());
}
/**
......
// { dg-options "-std=c++11" }
// Copyright (C) 2013 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/>.
// range insert using move iterator
#include <iterator>
#include <vector>
#include <unordered_set>
#include <testsuite_hooks.h>
#include <testsuite_counter_type.h>
bool test __attribute__((unused)) = true;
void test01()
{
using namespace __gnu_test;
std::vector<counter_type> ref = { 0, 1, 2, 3, 4, 5 };
typedef std::unordered_set<counter_type, counter_type_hasher> Set;
Set s;
counter_type::reset();
s.insert(std::make_move_iterator(ref.begin()),
std::make_move_iterator(ref.end()));
VERIFY( s.size() == ref.size() );
VERIFY( counter_type::move_count == ref.size() );
}
int main()
{
test01();
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