allocator.h (struct __alloc_neq): Add.
2007-10-18 Paolo Carlini <pcarlini@suse.de> * include/bits/allocator.h (struct __alloc_neq): Add. * include/bits/stl_list.h (list<>::_M_check_equal_allocators): Use it. From-SVN: r129457
This commit is contained in:
parent
37017f4dd6
commit
67202da49d
@ -1,3 +1,8 @@
|
||||
2007-10-18 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
* include/bits/allocator.h (struct __alloc_neq): Add.
|
||||
* include/bits/stl_list.h (list<>::_M_check_equal_allocators): Use it.
|
||||
|
||||
2007-10-18 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* include/ext/hash_map: To...
|
||||
|
@ -156,6 +156,23 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
}
|
||||
};
|
||||
|
||||
// Optimize for stateless allocators.
|
||||
template<typename _Alloc, bool = __is_empty(_Alloc)>
|
||||
struct __alloc_neq
|
||||
{
|
||||
static bool
|
||||
_S_do_it(const _Alloc&, const _Alloc&)
|
||||
{ return false; }
|
||||
};
|
||||
|
||||
template<typename _Alloc>
|
||||
struct __alloc_neq<_Alloc, false>
|
||||
{
|
||||
static bool
|
||||
_S_do_it(const _Alloc& __one, const _Alloc& __two)
|
||||
{ return __one != __two; }
|
||||
};
|
||||
|
||||
_GLIBCXX_END_NAMESPACE
|
||||
|
||||
#endif
|
||||
|
@ -1272,7 +1272,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
||||
void
|
||||
_M_check_equal_allocators(list& __x)
|
||||
{
|
||||
if (_M_get_Node_allocator() != __x._M_get_Node_allocator())
|
||||
if (std::__alloc_neq<typename _Base::_Node_alloc_type>::
|
||||
_S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()))
|
||||
__throw_runtime_error(__N("list::_M_check_equal_allocators"));
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user