From: Paolo Carlini Date: Sun, 10 Jan 2010 16:15:58 +0000 (+0000) Subject: string (basic_string<>::basic_string(basic_string&&), [...]): Add. X-Git-Tag: releases/gcc-4.5.0~1301 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b6f089bcbf20653a5a0e85d4390fe3b74e21bfc;p=thirdparty%2Fgcc.git string (basic_string<>::basic_string(basic_string&&), [...]): Add. 2010-01-10 Paolo Carlini * include/debug/string (basic_string<>::basic_string(basic_string&&), operator=(basic_string&&), assign(basic_string&&)): Add. * include/debug/string: Fully qualify initializer_list with std; fix _Allocator misspellings as _Alloc. From-SVN: r155790 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 30b09e17e8e7..e136e64e2a24 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2010-01-10 Paolo Carlini + + * include/debug/string (basic_string<>::basic_string(basic_string&&), + operator=(basic_string&&), assign(basic_string&&)): Add. + + * include/debug/string: Fully qualify initializer_list with std; fix + _Allocator misspellings as _Alloc. + 2010-01-10 Paolo Carlini * include/bits/basic_string.h (basic_string<>:: diff --git a/libstdc++-v3/include/debug/string b/libstdc++-v3/include/debug/string index 607d961171e0..160488e989bf 100644 --- a/libstdc++-v3/include/debug/string +++ b/libstdc++-v3/include/debug/string @@ -112,7 +112,12 @@ namespace __gnu_debug { } #ifdef __GXX_EXPERIMENTAL_CXX0X__ - basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) + basic_string(basic_string&& __str) + : _Base(std::forward<_Base>(__str)) + { } + + basic_string(std::initializer_list<_CharT> __l, + const _Allocator& __a = _Allocator()) : _Base(__l, __a) { } #endif // __GXX_EXPERIMENTAL_CXX0X__ @@ -146,7 +151,15 @@ namespace __gnu_debug #ifdef __GXX_EXPERIMENTAL_CXX0X__ basic_string& - operator=(initializer_list<_CharT> __l) + operator=(basic_string&& __str) + { + *static_cast<_Base*>(this) = std::forward<_Base>(__str); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + operator=(std::initializer_list<_CharT> __l) { *static_cast<_Base*>(this) = __l; this->_M_invalidate_all(); @@ -277,7 +290,7 @@ namespace __gnu_debug #ifdef __GXX_EXPERIMENTAL_CXX0X__ basic_string& - operator+=(initializer_list<_CharT> __l) + operator+=(std::initializer_list<_CharT> __l) { _M_base() += __l; this->_M_invalidate_all(); @@ -354,6 +367,16 @@ namespace __gnu_debug return *this; } +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + basic_string& + assign(basic_string&& __x) + { + _Base::assign(std::forward<_Base>(__x)); + this->_M_invalidate_all(); + return *this; + } +#endif // __GXX_EXPERIMENTAL_CXX0X__ + basic_string& assign(const basic_string& __str, size_type __pos, size_type __n) { @@ -400,7 +423,7 @@ namespace __gnu_debug #ifdef __GXX_EXPERIMENTAL_CXX0X__ basic_string& - assign(initializer_list<_CharT> __l) + assign(std::initializer_list<_CharT> __l) { _Base::assign(__l); this->_M_invalidate_all(); @@ -479,7 +502,7 @@ namespace __gnu_debug #ifdef __GXX_EXPERIMENTAL_CXX0X__ void - insert(iterator __p, initializer_list<_CharT> __l) + insert(iterator __p, std::initializer_list<_CharT> __l) { _Base::insert(__p, __l); this->_M_invalidate_all(); @@ -611,7 +634,7 @@ namespace __gnu_debug #ifdef __GXX_EXPERIMENTAL_CXX0X__ basic_string& replace(iterator __i1, iterator __i2, - initializer_list<_CharT> __l) + std::initializer_list<_CharT> __l) { __glibcxx_check_erase_range(__i1, __i2); _Base::replace(__i1.base(), __i2.base(), __l);