+2010-01-10 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * 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 <paolo.carlini@oracle.com>
* include/bits/basic_string.h (basic_string<>::
{ }
#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__
#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();
#ifdef __GXX_EXPERIMENTAL_CXX0X__
basic_string&
- operator+=(initializer_list<_CharT> __l)
+ operator+=(std::initializer_list<_CharT> __l)
{
_M_base() += __l;
this->_M_invalidate_all();
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)
{
#ifdef __GXX_EXPERIMENTAL_CXX0X__
basic_string&
- assign(initializer_list<_CharT> __l)
+ assign(std::initializer_list<_CharT> __l)
{
_Base::assign(__l);
this->_M_invalidate_all();
#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();
#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);