2017-05-11 François Dumont <fdumont@gcc.gnu.org>

* include/debug/safe_container.h [_GLIBCXX_USE_CXX11_ABI]
	(_Safe_container<>): Remove _IsCxx11AllocatorAware template parameter.
	* include/debug/string: Adapt.

From-SVN: r247926
This commit is contained in:
François Dumont 2017-05-11 20:03:47 +00:00
parent dc4dd7f63f
commit ea594612f0
3 changed files with 26 additions and 5 deletions

View File

@ -1,5 +1,9 @@
2017-05-11 François Dumont <fdumont@gcc.gnu.org>
* include/debug/safe_container.h [_GLIBCXX_USE_CXX11_ABI]
(_Safe_container<>): Remove _IsCxx11AllocatorAware template parameter.
* include/debug/string: Adapt.
* include/debug/formatter.h [_GLIBCXX_INLINE_VERSION]
(__gnu_debug::_Error_formatter::_Parameter::_M_print_field): Remove.
(__gnu_debug::_Error_formatter::_Parameter::_M_print_description):

View File

@ -36,8 +36,12 @@ namespace __gnu_debug
/// Safe class dealing with some allocator dependent operations.
template<typename _SafeContainer,
typename _Alloc,
template<typename> class _SafeBase,
bool _IsCxx11AllocatorAware = true>
template<typename> class _SafeBase
#if _GLIBCXX_USE_CXX11_ABI
>
#else
, bool _IsCxx11AllocatorAware = true>
#endif
class _Safe_container
: public _SafeBase<_SafeContainer>
{
@ -82,8 +86,10 @@ namespace __gnu_debug
{
__glibcxx_check_self_move_assign(__x);
# if !_GLIBCXX_USE_CXX11_ABI
if (_IsCxx11AllocatorAware)
{
# endif
typedef __gnu_cxx::__alloc_traits<_Alloc> _Alloc_traits;
bool __xfer_memory = _Alloc_traits::_S_propagate_on_move_assign()
@ -92,9 +98,11 @@ namespace __gnu_debug
_Base::_M_swap(__x);
else
this->_M_invalidate_all();
# if !_GLIBCXX_USE_CXX11_ABI
}
else
_Base::_M_swap(__x);
# endif
__x._M_invalidate_all();
return *this;
@ -103,7 +111,9 @@ namespace __gnu_debug
void
_M_swap(_Safe_container& __x) noexcept
{
# if !_GLIBCXX_USE_CXX11_ABI
if (_IsCxx11AllocatorAware)
# endif
{
typedef __gnu_cxx::__alloc_traits<_Alloc> _Alloc_traits;

View File

@ -44,13 +44,20 @@ template<typename _CharT, typename _Traits = std::char_traits<_CharT>,
class basic_string
: public __gnu_debug::_Safe_container<
basic_string<_CharT, _Traits, _Allocator>,
_Allocator, _Safe_sequence, bool(_GLIBCXX_USE_CXX11_ABI)>,
#if _GLIBCXX_USE_CXX11_ABI
_Allocator, _Safe_sequence>,
#else
_Allocator, _Safe_sequence, false>,
#endif
public std::basic_string<_CharT, _Traits, _Allocator>
{
typedef std::basic_string<_CharT, _Traits, _Allocator> _Base;
typedef __gnu_debug::_Safe_container<
basic_string, _Allocator, _Safe_sequence, bool(_GLIBCXX_USE_CXX11_ABI)>
_Safe;
#if _GLIBCXX_USE_CXX11_ABI
basic_string, _Allocator, _Safe_sequence> _Safe;
#else
basic_string, _Allocator, _Safe_sequence, false> _Safe;
#endif
public:
// types: