basic_string.h (operator+(basic_string<>&&, const basic_string<>&), [...]): Add.
2010-12-17 Paolo Carlini <paolo.carlini@oracle.com> * include/bits/basic_string.h (operator+(basic_string<>&&, const basic_string<>&), operator+(const basic_string<>&, basic_string<>&&), operator+(basic_string<>&&, basic_string<>&&), operator+(const _CharT*, basic_string<>&&), operator+(_CharT, basic_string<>&&), operator+(basic_string<>&&, const _CharT*), operator+(basic_string<>&&, _CharT)): Add. * testsuite/21_strings/basic_string/operators/char/3.cc: New. * testsuite/21_strings/basic_string/operators/wchar_t/3.cc: Likewise. From-SVN: r167994
This commit is contained in:
parent
24de72dbe2
commit
ce99f498c7
4 changed files with 241 additions and 0 deletions
|
@ -1,3 +1,14 @@
|
|||
2010-12-17 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* include/bits/basic_string.h (operator+(basic_string<>&&,
|
||||
const basic_string<>&), operator+(const basic_string<>&,
|
||||
basic_string<>&&), operator+(basic_string<>&&, basic_string<>&&),
|
||||
operator+(const _CharT*, basic_string<>&&), operator+(_CharT,
|
||||
basic_string<>&&), operator+(basic_string<>&&, const _CharT*),
|
||||
operator+(basic_string<>&&, _CharT)): Add.
|
||||
* testsuite/21_strings/basic_string/operators/char/3.cc: New.
|
||||
* testsuite/21_strings/basic_string/operators/wchar_t/3.cc: Likewise.
|
||||
|
||||
2010-12-17 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* aclocal.m4: Regenerate.
|
||||
|
|
|
@ -2363,6 +2363,50 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
|||
return __str;
|
||||
}
|
||||
|
||||
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||
inline basic_string<_CharT, _Traits, _Alloc>
|
||||
operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
|
||||
const basic_string<_CharT, _Traits, _Alloc>& __rhs)
|
||||
{ return std::move(__lhs.append(__rhs)); }
|
||||
|
||||
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||
inline basic_string<_CharT, _Traits, _Alloc>
|
||||
operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
|
||||
basic_string<_CharT, _Traits, _Alloc>&& __rhs)
|
||||
{ return std::move(__rhs.insert(0, __lhs)); }
|
||||
|
||||
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||
inline basic_string<_CharT, _Traits, _Alloc>
|
||||
operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
|
||||
basic_string<_CharT, _Traits, _Alloc>&& __rhs)
|
||||
{ return std::move(__lhs.append(__rhs)); }
|
||||
|
||||
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||
inline basic_string<_CharT, _Traits, _Alloc>
|
||||
operator+(const _CharT* __lhs,
|
||||
basic_string<_CharT, _Traits, _Alloc>&& __rhs)
|
||||
{ return std::move(__rhs.insert(0, __lhs)); }
|
||||
|
||||
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||
inline basic_string<_CharT, _Traits, _Alloc>
|
||||
operator+(_CharT __lhs, basic_string<_CharT,
|
||||
_Traits, _Alloc>&& __rhs)
|
||||
{ return std::move(__rhs.insert(0, 1, __lhs)); }
|
||||
|
||||
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||
inline basic_string<_CharT, _Traits, _Alloc>
|
||||
operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
|
||||
const _CharT* __rhs)
|
||||
{ return std::move(__lhs.append(__rhs)); }
|
||||
|
||||
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||
inline basic_string<_CharT, _Traits, _Alloc>
|
||||
operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
|
||||
_CharT __rhs)
|
||||
{ return std::move(__lhs.append(1, __rhs)); }
|
||||
#endif
|
||||
|
||||
// operator ==
|
||||
/**
|
||||
* @brief Test equivalence of two strings.
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
// 2010-12-17 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
//
|
||||
// Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
//
|
||||
// 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 of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// { dg-options "-std=gnu++0x" }
|
||||
// { dg-require-string-conversions "" }
|
||||
|
||||
#include <string>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
void test01()
|
||||
{
|
||||
bool test __attribute__((unused)) = true;
|
||||
using std::string;
|
||||
|
||||
VERIFY( (string("abc") + string("def")
|
||||
== string("abcdef")) );
|
||||
string s1("abc");
|
||||
VERIFY( s1 + string("def") == string("abcdef") );
|
||||
string s2("def");
|
||||
VERIFY( string("abc") + s2 == string("abcdef") );
|
||||
VERIFY( string("abc") + 'd' == string("abcd") );
|
||||
VERIFY( string("abc") + "def" == string("abcdef") );
|
||||
VERIFY( 'a' + string("bcd") == string("abcd") );
|
||||
VERIFY( "abc" + string("def") == string("abcdef") );
|
||||
|
||||
VERIFY( (string("abcdefghij") + string("klmnopqrst")
|
||||
== string("abcdefghijklmnopqrst")) );
|
||||
string s1l("abcdefghij");
|
||||
VERIFY( (s1l + string("klmnopqrst")
|
||||
== string("abcdefghijklmnopqrst")) );
|
||||
string s2l("klmnopqrst");
|
||||
VERIFY( (string("abcdefghij") + s2l
|
||||
== string("abcdefghijklmnopqrst")) );
|
||||
VERIFY( (string("abcdefghijklmno") + 'p'
|
||||
== string("abcdefghijklmnop")) );
|
||||
VERIFY( (string("abcdefghijklmno") + "pqrst"
|
||||
== string("abcdefghijklmnopqrst")) );
|
||||
VERIFY( ('a' + string("bcdefghijklmnop")
|
||||
== string("abcdefghijklmnop")) );
|
||||
VERIFY( ("abcde" + string("fghijklmnopqrst")
|
||||
== string("abcdefghijklmnopqrst")) );
|
||||
|
||||
VERIFY( (string("abcdefghijklmnopqrst") + string("uvwxy")
|
||||
== string("abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( (string("abcde") + string("fghijklmnopqrstuvwxy")
|
||||
== string("abcdefghijklmnopqrstuvwxy")) );
|
||||
string s1ll1("abcdefghijklmnopqrst");
|
||||
VERIFY( (s1ll1 + string("uvwxy")
|
||||
== string("abcdefghijklmnopqrstuvwxy")) );
|
||||
string s1ll2("abcde");
|
||||
VERIFY( (s1ll2 + string("fghijklmnopqrstuvwxy")
|
||||
== string("abcdefghijklmnopqrstuvwxy")) );
|
||||
string s2ll1("fghijklmnopqrstuvwxy");
|
||||
VERIFY( (string("abcde") + s2ll1
|
||||
== string("abcdefghijklmnopqrstuvwxy")) );
|
||||
string s2ll2("uvwxy");
|
||||
VERIFY( (string("abcdefghijklmnopqrst") + s2ll2
|
||||
== string("abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( (string("abcdefghijklmnopqrst") + 'u'
|
||||
== string("abcdefghijklmnopqrstu")) );
|
||||
VERIFY( (string("abcdefghijklmnopqrst") + "uvwxy"
|
||||
== string("abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( (string("abcde") + "fghijklmnopqrstuvwxy"
|
||||
== string("abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( ('a' + string("bcdefghijklmnopqrstuvwxy")
|
||||
== string("abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( ("abcde" + string("fghijklmnopqrstuvwxy")
|
||||
== string("abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( ("abcdefghijklmnopqrst" + string("uvwxy")
|
||||
== string("abcdefghijklmnopqrstuvwxy")) );
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
// 2010-12-17 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
//
|
||||
// Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
//
|
||||
// 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 of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// { dg-options "-std=gnu++0x" }
|
||||
// { dg-require-string-conversions "" }
|
||||
|
||||
#include <string>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
void test01()
|
||||
{
|
||||
bool test __attribute__((unused)) = true;
|
||||
using std::wstring;
|
||||
|
||||
VERIFY( (wstring(L"abc") + wstring(L"def")
|
||||
== wstring(L"abcdef")) );
|
||||
wstring s1(L"abc");
|
||||
VERIFY( s1 + wstring(L"def") == wstring(L"abcdef") );
|
||||
wstring s2(L"def");
|
||||
VERIFY( wstring(L"abc") + s2 == wstring(L"abcdef") );
|
||||
VERIFY( wstring(L"abc") + L'd' == wstring(L"abcd") );
|
||||
VERIFY( wstring(L"abc") + L"def" == wstring(L"abcdef") );
|
||||
VERIFY( L'a' + wstring(L"bcd") == wstring(L"abcd") );
|
||||
VERIFY( L"abc" + wstring(L"def") == wstring(L"abcdef") );
|
||||
|
||||
VERIFY( (wstring(L"abcdefghij") + wstring(L"klmnopqrst")
|
||||
== wstring(L"abcdefghijklmnopqrst")) );
|
||||
wstring s1l(L"abcdefghij");
|
||||
VERIFY( (s1l + wstring(L"klmnopqrst")
|
||||
== wstring(L"abcdefghijklmnopqrst")) );
|
||||
wstring s2l(L"klmnopqrst");
|
||||
VERIFY( (wstring(L"abcdefghij") + s2l
|
||||
== wstring(L"abcdefghijklmnopqrst")) );
|
||||
VERIFY( (wstring(L"abcdefghijklmno") + L'p'
|
||||
== wstring(L"abcdefghijklmnop")) );
|
||||
VERIFY( (wstring(L"abcdefghijklmno") + L"pqrst"
|
||||
== wstring(L"abcdefghijklmnopqrst")) );
|
||||
VERIFY( (L'a' + wstring(L"bcdefghijklmnop")
|
||||
== wstring(L"abcdefghijklmnop")) );
|
||||
VERIFY( (L"abcde" + wstring(L"fghijklmnopqrst")
|
||||
== wstring(L"abcdefghijklmnopqrst")) );
|
||||
|
||||
VERIFY( (wstring(L"abcdefghijklmnopqrst") + wstring(L"uvwxy")
|
||||
== wstring(L"abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( (wstring(L"abcde") + wstring(L"fghijklmnopqrstuvwxy")
|
||||
== wstring(L"abcdefghijklmnopqrstuvwxy")) );
|
||||
wstring s1ll1(L"abcdefghijklmnopqrst");
|
||||
VERIFY( (s1ll1 + wstring(L"uvwxy")
|
||||
== wstring(L"abcdefghijklmnopqrstuvwxy")) );
|
||||
wstring s1ll2(L"abcde");
|
||||
VERIFY( (s1ll2 + wstring(L"fghijklmnopqrstuvwxy")
|
||||
== wstring(L"abcdefghijklmnopqrstuvwxy")) );
|
||||
wstring s2ll1(L"fghijklmnopqrstuvwxy");
|
||||
VERIFY( (wstring(L"abcde") + s2ll1
|
||||
== wstring(L"abcdefghijklmnopqrstuvwxy")) );
|
||||
wstring s2ll2(L"uvwxy");
|
||||
VERIFY( (wstring(L"abcdefghijklmnopqrst") + s2ll2
|
||||
== wstring(L"abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( (wstring(L"abcdefghijklmnopqrst") + L'u'
|
||||
== wstring(L"abcdefghijklmnopqrstu")) );
|
||||
VERIFY( (wstring(L"abcdefghijklmnopqrst") + L"uvwxy"
|
||||
== wstring(L"abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( (wstring(L"abcde") + L"fghijklmnopqrstuvwxy"
|
||||
== wstring(L"abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( (L'a' + wstring(L"bcdefghijklmnopqrstuvwxy")
|
||||
== wstring(L"abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( (L"abcde" + wstring(L"fghijklmnopqrstuvwxy")
|
||||
== wstring(L"abcdefghijklmnopqrstuvwxy")) );
|
||||
VERIFY( (L"abcdefghijklmnopqrst" + wstring(L"uvwxy")
|
||||
== wstring(L"abcdefghijklmnopqrstuvwxy")) );
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue