Commit 5ab06c6d by Paolo Carlini Committed by Paolo Carlini

set.h: Implement DR 130 here too.

2010-01-03  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/debug/set.h: Implement DR 130 here too.
	* include/debug/multiset.h: Likewise.
	* include/debug/map.h: Likewise.
	* include/debug/multimap.h: Likewise.
	* include/profile/set.h: Implement DR 130 fully.
	* include/profile/multiset.h: Likewise.
	* include/profile/map.h: Likewise.
	* include/profile/multimap.h: Likewise.
	* include/debug/list: Implement DR 1133 here too.
	* include/ext/pb_ds/detail/debug_map_base.hpp: Comment out for
	now uses of __gnu_cxx::throw_allocator.
	* testsuite/21_strings/basic_string/40160.cc: Don't pass
	explicitly -D_GLIBCXX_DEBUG, doesn't play well with profile-mode
	testing.

From-SVN: r155594
parent c9828e78
2010-01-03 Paolo Carlini <paolo.carlini@oracle.com> 2010-01-03 Paolo Carlini <paolo.carlini@oracle.com>
* include/debug/set.h: Implement DR 130 here too.
* include/debug/multiset.h: Likewise.
* include/debug/map.h: Likewise.
* include/debug/multimap.h: Likewise.
* include/profile/set.h: Implement DR 130 fully.
* include/profile/multiset.h: Likewise.
* include/profile/map.h: Likewise.
* include/profile/multimap.h: Likewise.
* include/debug/list: Implement DR 1133 here too.
* include/ext/pb_ds/detail/debug_map_base.hpp: Comment out for
now uses of __gnu_cxx::throw_allocator.
* testsuite/21_strings/basic_string/40160.cc: Don't pass
explicitly -D_GLIBCXX_DEBUG, doesn't play well with profile-mode
testing.
2010-01-03 Paolo Carlini <paolo.carlini@oracle.com>
* include/profile/bitset (bitset<>::bitset(unsigned long long)): Add * include/profile/bitset (bitset<>::bitset(unsigned long long)): Add
in C++0x mode. in C++0x mode.
* include/debug/bitset (bitset<>::bitset(unsigned long long)): * include/debug/bitset (bitset<>::bitset(unsigned long long)):
......
// Debugging list implementation -*- C++ -*- // Debugging list implementation -*- C++ -*-
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 // Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -395,6 +395,12 @@ namespace __debug ...@@ -395,6 +395,12 @@ namespace __debug
this->splice(__position, _GLIBCXX_MOVE(__x), __x.begin(), __x.end()); this->splice(__position, _GLIBCXX_MOVE(__x), __x.begin(), __x.end());
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
void
splice(iterator __position, list& __x)
{ splice(__position, std::move(__x)); }
#endif
void void
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
splice(iterator __position, list&& __x, iterator __i) splice(iterator __position, list&& __x, iterator __i)
...@@ -421,6 +427,12 @@ namespace __debug ...@@ -421,6 +427,12 @@ namespace __debug
__i.base()); __i.base());
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
void
splice(iterator __position, list& __x, iterator __i)
{ splice(__position, std::move(__x), __i); }
#endif
void void
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
splice(iterator __position, list&& __x, iterator __first, splice(iterator __position, list&& __x, iterator __first,
...@@ -457,6 +469,12 @@ namespace __debug ...@@ -457,6 +469,12 @@ namespace __debug
__first.base(), __last.base()); __first.base(), __last.base());
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
void
splice(iterator __position, list& __x, iterator __first, iterator __last)
{ splice(__position, std::move(__x), __first, __last); }
#endif
void void
remove(const _Tp& __value) remove(const _Tp& __value)
{ {
...@@ -541,6 +559,12 @@ namespace __debug ...@@ -541,6 +559,12 @@ namespace __debug
} }
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
void
merge(list& __x)
{ merge(std::move(__x)); }
#endif
template<class _Compare> template<class _Compare>
void void
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
...@@ -566,6 +590,13 @@ namespace __debug ...@@ -566,6 +590,13 @@ namespace __debug
} }
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
template<typename _Compare>
void
merge(list& __x, _Compare __comp)
{ merge(std::move(__x), __comp); }
#endif
void void
sort() { _Base::sort(); } sort() { _Base::sort(); }
......
// Debugging map implementation -*- C++ -*- // Debugging map implementation -*- C++ -*-
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009 // Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -228,6 +228,15 @@ namespace __debug ...@@ -228,6 +228,15 @@ namespace __debug
_Base::insert(__first, __last); _Base::insert(__first, __last);
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __position)
{
__glibcxx_check_erase(__position);
__position._M_invalidate();
return iterator(_Base::erase(__position.base()), this);
}
#else
void void
erase(iterator __position) erase(iterator __position)
{ {
...@@ -235,6 +244,7 @@ namespace __debug ...@@ -235,6 +244,7 @@ namespace __debug
__position._M_invalidate(); __position._M_invalidate();
_Base::erase(__position.base()); _Base::erase(__position.base());
} }
#endif
size_type size_type
erase(const key_type& __x) erase(const key_type& __x)
...@@ -250,6 +260,18 @@ namespace __debug ...@@ -250,6 +260,18 @@ namespace __debug
} }
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __first, iterator __last)
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last);
while (__first != __last)
this->erase(__first++);
return __last;
}
#else
void void
erase(iterator __first, iterator __last) erase(iterator __first, iterator __last)
{ {
...@@ -259,6 +281,7 @@ namespace __debug ...@@ -259,6 +281,7 @@ namespace __debug
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
} }
#endif
void void
swap(map& __x) swap(map& __x)
......
// Debugging multimap implementation -*- C++ -*- // Debugging multimap implementation -*- C++ -*-
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009 // Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -215,6 +215,15 @@ namespace __debug ...@@ -215,6 +215,15 @@ namespace __debug
_Base::insert(__first, __last); _Base::insert(__first, __last);
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __position)
{
__glibcxx_check_erase(__position);
__position._M_invalidate();
return iterator(_Base::erase(__position.base()), this);
}
#else
void void
erase(iterator __position) erase(iterator __position)
{ {
...@@ -222,6 +231,7 @@ namespace __debug ...@@ -222,6 +231,7 @@ namespace __debug
__position._M_invalidate(); __position._M_invalidate();
_Base::erase(__position.base()); _Base::erase(__position.base());
} }
#endif
size_type size_type
erase(const key_type& __x) erase(const key_type& __x)
...@@ -238,6 +248,18 @@ namespace __debug ...@@ -238,6 +248,18 @@ namespace __debug
return __count; return __count;
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __first, iterator __last)
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last);
while (__first != __last)
this->erase(__first++);
return __last;
}
#else
void void
erase(iterator __first, iterator __last) erase(iterator __first, iterator __last)
{ {
...@@ -245,8 +267,9 @@ namespace __debug ...@@ -245,8 +267,9 @@ namespace __debug
// 151. can't currently clear() empty container // 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last); __glibcxx_check_erase_range(__first, __last);
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
} }
#endif
void void
swap(multimap& __x) swap(multimap& __x)
......
// Debugging multiset implementation -*- C++ -*- // Debugging multiset implementation -*- C++ -*-
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009 // Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -212,6 +212,15 @@ namespace __debug ...@@ -212,6 +212,15 @@ namespace __debug
{ _Base::insert(__l); } { _Base::insert(__l); }
#endif #endif
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __position)
{
__glibcxx_check_erase(__position);
__position._M_invalidate();
return iterator(_Base::erase(__position.base()), this);
}
#else
void void
erase(iterator __position) erase(iterator __position)
{ {
...@@ -219,6 +228,7 @@ namespace __debug ...@@ -219,6 +228,7 @@ namespace __debug
__position._M_invalidate(); __position._M_invalidate();
_Base::erase(__position.base()); _Base::erase(__position.base());
} }
#endif
size_type size_type
erase(const key_type& __x) erase(const key_type& __x)
...@@ -235,6 +245,18 @@ namespace __debug ...@@ -235,6 +245,18 @@ namespace __debug
return __count; return __count;
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __first, iterator __last)
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last);
while (__first != __last)
this->erase(__first++);
return __last;
}
#else
void void
erase(iterator __first, iterator __last) erase(iterator __first, iterator __last)
{ {
...@@ -242,8 +264,9 @@ namespace __debug ...@@ -242,8 +264,9 @@ namespace __debug
// 151. can't currently clear() empty container // 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last); __glibcxx_check_erase_range(__first, __last);
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
} }
#endif
void void
swap(multiset& __x) swap(multiset& __x)
......
// Debugging set implementation -*- C++ -*- // Debugging set implementation -*- C++ -*-
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009 // Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -217,6 +217,15 @@ namespace __debug ...@@ -217,6 +217,15 @@ namespace __debug
{ _Base::insert(__l); } { _Base::insert(__l); }
#endif #endif
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __position)
{
__glibcxx_check_erase(__position);
__position._M_invalidate();
return iterator(_Base::erase(__position.base()), this);
}
#else
void void
erase(iterator __position) erase(iterator __position)
{ {
...@@ -224,6 +233,7 @@ namespace __debug ...@@ -224,6 +233,7 @@ namespace __debug
__position._M_invalidate(); __position._M_invalidate();
_Base::erase(__position.base()); _Base::erase(__position.base());
} }
#endif
size_type size_type
erase(const key_type& __x) erase(const key_type& __x)
...@@ -239,16 +249,28 @@ namespace __debug ...@@ -239,16 +249,28 @@ namespace __debug
} }
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __first, iterator __last)
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last);
while (__first != __last)
this->erase(__first++);
return __last;
}
#else
void void
erase(iterator __first, iterator __last) erase(iterator __first, iterator __last)
{ {
// _GLIBCXX_RESOLVE_LIB_DEFECTS // _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container // 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last); __glibcxx_check_erase_range(__first, __last);
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
} }
#endif
void void
swap(set& __x) swap(set& __x)
......
// -*- C++ -*- // -*- C++ -*-
// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. // Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // 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 // software; you can redistribute it and/or modify it under the terms
...@@ -153,9 +154,10 @@ namespace __gnu_pbds ...@@ -153,9 +154,10 @@ namespace __gnu_pbds
insert_new(const_key_reference r_key) insert_new(const_key_reference r_key)
{ {
_GLIBCXX_DEBUG_ONLY(assert_valid();) _GLIBCXX_DEBUG_ONLY(assert_valid();)
__gnu_cxx::throw_allocator<char> alloc; // XXX FIXME: Adapt for __gnu_cxx::throw_allocator_random.
const double orig_throw_prob = alloc.get_probability(); //__gnu_cxx::throw_allocator<char> alloc;
alloc.set_probability(0); // const double orig_throw_prob = alloc.get_probability();
// alloc.set_probability(0);
if (find(r_key) != m_key_set.end()) if (find(r_key) != m_key_set.end())
{ {
std::cerr << "insert_new" << r_key << std::endl; std::cerr << "insert_new" << r_key << std::endl;
...@@ -171,7 +173,7 @@ namespace __gnu_pbds ...@@ -171,7 +173,7 @@ namespace __gnu_pbds
std::cerr << "insert_new" << r_key << std::endl; std::cerr << "insert_new" << r_key << std::endl;
std::abort(); std::abort();
} }
alloc.set_probability(orig_throw_prob); // alloc.set_probability(orig_throw_prob);
_GLIBCXX_DEBUG_ONLY(assert_valid();) _GLIBCXX_DEBUG_ONLY(assert_valid();)
} }
...@@ -314,9 +316,10 @@ namespace __gnu_pbds ...@@ -314,9 +316,10 @@ namespace __gnu_pbds
PB_DS_CLASS_C_DEC:: PB_DS_CLASS_C_DEC::
split(const_key_reference r_key, Cmp_Fn cmp_fn, PB_DS_CLASS_C_DEC& other) split(const_key_reference r_key, Cmp_Fn cmp_fn, PB_DS_CLASS_C_DEC& other)
{ {
__gnu_cxx::throw_allocator<char> alloc; // XXX FIXME: Adapt for __gnu_cxx::throw_allocator_random.
const double orig_throw_prob = alloc.get_probability(); // __gnu_cxx::throw_allocator<char> alloc;
alloc.set_probability(0); // const double orig_throw_prob = alloc.get_probability();
// alloc.set_probability(0);
other.clear(); other.clear();
key_set_iterator it = m_key_set.begin(); key_set_iterator it = m_key_set.begin();
while (it != m_key_set.end()) while (it != m_key_set.end())
...@@ -327,7 +330,7 @@ namespace __gnu_pbds ...@@ -327,7 +330,7 @@ namespace __gnu_pbds
} }
else else
++it; ++it;
alloc.set_probability(orig_throw_prob); // alloc.set_probability(orig_throw_prob);
} }
PB_DS_CLASS_T_DEC PB_DS_CLASS_T_DEC
...@@ -335,9 +338,10 @@ namespace __gnu_pbds ...@@ -335,9 +338,10 @@ namespace __gnu_pbds
PB_DS_CLASS_C_DEC:: PB_DS_CLASS_C_DEC::
join(PB_DS_CLASS_C_DEC& other) join(PB_DS_CLASS_C_DEC& other)
{ {
__gnu_cxx::throw_allocator<char> alloc; // XXX FIXME: Adapt for __gnu_cxx::throw_allocator_random.
const double orig_throw_prob = alloc.get_probability(); // __gnu_cxx::throw_allocator<char> alloc;
alloc.set_probability(0); // const double orig_throw_prob = alloc.get_probability();
// alloc.set_probability(0);
key_set_iterator it = other.m_key_set.begin(); key_set_iterator it = other.m_key_set.begin();
while (it != other.m_key_set.end()) while (it != other.m_key_set.end())
{ {
...@@ -345,7 +349,7 @@ namespace __gnu_pbds ...@@ -345,7 +349,7 @@ namespace __gnu_pbds
it = other.m_key_set.erase(it); it = other.m_key_set.erase(it);
} }
_GLIBCXX_DEBUG_ASSERT(other.m_key_set.empty()); _GLIBCXX_DEBUG_ASSERT(other.m_key_set.empty());
alloc.set_probability(orig_throw_prob); // alloc.set_probability(orig_throw_prob);
} }
#undef PB_DS_CLASS_T_DEC #undef PB_DS_CLASS_T_DEC
......
// Profiling map implementation -*- C++ -*- // Profiling map implementation -*- C++ -*-
// Copyright (C) 2009 Free Software Foundation, Inc. // Copyright (C) 2009, 2010 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // 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 // software; you can redistribute it and/or modify it under the
...@@ -307,6 +307,17 @@ namespace __profile ...@@ -307,6 +307,17 @@ namespace __profile
} }
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __first, iterator __last)
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container
while (__first != __last)
this->erase(__first++);
return __last;
}
#else
void void
erase(iterator __first, iterator __last) erase(iterator __first, iterator __last)
{ {
...@@ -315,6 +326,7 @@ namespace __profile ...@@ -315,6 +326,7 @@ namespace __profile
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
} }
#endif
void void
......
...@@ -206,15 +206,11 @@ namespace __profile ...@@ -206,15 +206,11 @@ namespace __profile
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator iterator
erase(iterator __position) erase(iterator __position)
{ { return _Base::erase(__position); }
return _Base::erase(__position);
}
#else #else
void void
erase(iterator __position) erase(iterator __position)
{ { _Base::erase(__position); }
_Base::erase(__position);
}
#endif #endif
size_type size_type
...@@ -231,14 +227,26 @@ namespace __profile ...@@ -231,14 +227,26 @@ namespace __profile
return __count; return __count;
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __first, iterator __last)
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container
while (__first != __last)
this->erase(__first++);
return __last;
}
#else
void void
erase(iterator __first, iterator __last) erase(iterator __first, iterator __last)
{ {
// _GLIBCXX_RESOLVE_LIB_DEFECTS // _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container // 151. can't currently clear() empty container
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
} }
#endif
void void
swap(multimap& __x) swap(multimap& __x)
......
// Profiling multiset implementation -*- C++ -*- // Profiling multiset implementation -*- C++ -*-
// Copyright (C) 2009 Free Software Foundation, Inc. // Copyright (C) 2009, 2010 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // 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 // software; you can redistribute it and/or modify it under the
...@@ -204,15 +204,11 @@ namespace __profile ...@@ -204,15 +204,11 @@ namespace __profile
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator iterator
erase(iterator __position) erase(iterator __position)
{ { return _Base::erase(__position); }
return _Base::erase(__position);
}
#else #else
void void
erase(iterator __position) erase(iterator __position)
{ { _Base::erase(__position); }
_Base::erase(__position);
}
#endif #endif
size_type size_type
...@@ -229,14 +225,26 @@ namespace __profile ...@@ -229,14 +225,26 @@ namespace __profile
return __count; return __count;
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __first, iterator __last)
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container
while (__first != __last)
this->erase(__first++);
return __last;
}
#else
void void
erase(iterator __first, iterator __last) erase(iterator __first, iterator __last)
{ {
// _GLIBCXX_RESOLVE_LIB_DEFECTS // _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container // 151. can't currently clear() empty container
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
} }
#endif
void void
swap(multiset& __x) swap(multiset& __x)
......
// Profiling set implementation -*- C++ -*- // Profiling set implementation -*- C++ -*-
// Copyright (C) 2009 Free Software Foundation, Inc. // Copyright (C) 2009, 2010 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // 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 // software; you can redistribute it and/or modify it under the
...@@ -209,15 +209,11 @@ namespace __profile ...@@ -209,15 +209,11 @@ namespace __profile
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator iterator
erase(iterator __position) erase(iterator __position)
{ { return _Base::erase(__position); }
return _Base::erase(__position);
}
#else #else
void void
erase(iterator __position) erase(iterator __position)
{ { _Base::erase(__position); }
_Base::erase(__position);
}
#endif #endif
size_type size_type
...@@ -233,14 +229,26 @@ namespace __profile ...@@ -233,14 +229,26 @@ namespace __profile
} }
} }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator
erase(iterator __first, iterator __last)
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container
while (__first != __last)
this->erase(__first++);
return __last;
}
#else
void void
erase(iterator __first, iterator __last) erase(iterator __first, iterator __last)
{ {
// _GLIBCXX_RESOLVE_LIB_DEFECTS // _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container // 151. can't currently clear() empty container
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
} }
#endif
void void
swap(set& __x) swap(set& __x)
......
// -*- C++ -*- // -*- C++ -*-
// Copyright (C) 2009 Free Software Foundation, Inc. // Copyright (C) 2009, 2010 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // 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 // software; you can redistribute it and/or modify it under the
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
// with this library; see the file COPYING3. If not see // with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>. // <http://www.gnu.org/licenses/>.
// { dg-options "-fno-rtti -D_GLIBCXX_DEBUG" } // { dg-options "-fno-rtti" }
// { dg-do compile } // { dg-do compile }
// libstdc++/40160 // libstdc++/40160
......
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