Add noexcept to various basic_string string operations

* include/bits/basic_string.h (basic_string::find, basic_string::rfind)
	(basic_string::find_first_of, basic_string::find_last_of)
	(basic_string::find_first_not_of, basic_string::find_last_not_of):
	Make all overloads noexcept.
	(basic_string::compare(const _CharT*)): Make noexcept.

From-SVN: r243290
This commit is contained in:
Jonathan Wakely 2016-12-06 10:43:42 +00:00 committed by Jonathan Wakely
parent 3703d0958b
commit 39a0325104
3 changed files with 64 additions and 34 deletions

View File

@ -1,3 +1,11 @@
2016-12-06 Jonathan Wakely <jwakely@redhat.com>
* include/bits/basic_string.h (basic_string::find, basic_string::rfind)
(basic_string::find_first_of, basic_string::find_last_of)
(basic_string::find_first_not_of, basic_string::find_last_not_of):
Make all overloads noexcept.
(basic_string::compare(const _CharT*)): Make noexcept.
2016-12-03 John David Anglin <danglin@gcc.gnu.org>
* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Regenerate.

View File

@ -2251,7 +2251,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
* npos.
*/
size_type
find(const _CharT* __s, size_type __pos, size_type __n) const;
find(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT;
/**
* @brief Find position of a string.
@ -2265,7 +2266,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find(const basic_string& __str, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->find(__str.data(), __pos, __str.size()); }
#if __cplusplus > 201402L
@ -2291,7 +2292,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
* it begins. If not found, returns npos.
*/
size_type
find(const _CharT* __s, size_type __pos = 0) const
find(const _CharT* __s, size_type __pos = 0) const _GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
return this->find(__s, __pos, traits_type::length(__s));
@ -2322,7 +2323,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
rfind(const basic_string& __str, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->rfind(__str.data(), __pos, __str.size()); }
#if __cplusplus > 201402L
@ -2350,7 +2351,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
* npos.
*/
size_type
rfind(const _CharT* __s, size_type __pos, size_type __n) const;
rfind(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT;
/**
* @brief Find last position of a C string.
@ -2395,7 +2397,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_first_of(const basic_string& __str, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->find_first_of(__str.data(), __pos, __str.size()); }
#if __cplusplus > 201402L
@ -2423,7 +2425,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
* returns npos.
*/
size_type
find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT;
/**
* @brief Find position of a character of C string.
@ -2437,6 +2440,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_first_of(const _CharT* __s, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
return this->find_first_of(__s, __pos, traits_type::length(__s));
@ -2471,7 +2475,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_last_of(const basic_string& __str, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->find_last_of(__str.data(), __pos, __str.size()); }
#if __cplusplus > 201402L
@ -2499,7 +2503,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
* returns npos.
*/
size_type
find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT;
/**
* @brief Find last position of a character of C string.
@ -2513,6 +2518,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_last_of(const _CharT* __s, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
return this->find_last_of(__s, __pos, traits_type::length(__s));
@ -2546,7 +2552,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_first_not_of(const basic_string& __str, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->find_first_not_of(__str.data(), __pos, __str.size()); }
#if __cplusplus > 201402L
@ -2575,7 +2581,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_first_not_of(const _CharT* __s, size_type __pos,
size_type __n) const;
size_type __n) const _GLIBCXX_NOEXCEPT;
/**
* @brief Find position of a character not in C string.
@ -2589,6 +2595,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_first_not_of(const _CharT* __s, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
return this->find_first_not_of(__s, __pos, traits_type::length(__s));
@ -2606,7 +2613,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_first_not_of(_CharT __c, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT;
_GLIBCXX_NOEXCEPT;
/**
* @brief Find last position of a character not in string.
@ -2621,7 +2628,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_last_not_of(const basic_string& __str, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->find_last_not_of(__str.data(), __pos, __str.size()); }
#if __cplusplus > 201402L
@ -2650,7 +2657,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_last_not_of(const _CharT* __s, size_type __pos,
size_type __n) const;
size_type __n) const _GLIBCXX_NOEXCEPT;
/**
* @brief Find last position of a character not in C string.
* @param __s C string containing characters to avoid.
@ -2664,6 +2671,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_last_not_of(const _CharT* __s, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
return this->find_last_not_of(__s, __pos, traits_type::length(__s));
@ -2681,7 +2689,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
*/
size_type
find_last_not_of(_CharT __c, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT;
_GLIBCXX_NOEXCEPT;
/**
* @brief Get a substring.
@ -2841,7 +2849,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
* ordered first.
*/
int
compare(const _CharT* __s) const;
compare(const _CharT* __s) const _GLIBCXX_NOEXCEPT;
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 5 String::compare specification questionable
@ -4787,7 +4795,8 @@ _GLIBCXX_END_NAMESPACE_CXX11
* npos.
*/
size_type
find(const _CharT* __s, size_type __pos, size_type __n) const;
find(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT;
/**
* @brief Find position of a string.
@ -4801,7 +4810,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find(const basic_string& __str, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->find(__str.data(), __pos, __str.size()); }
/**
@ -4815,7 +4824,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
* it begins. If not found, returns npos.
*/
size_type
find(const _CharT* __s, size_type __pos = 0) const
find(const _CharT* __s, size_type __pos = 0) const _GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
return this->find(__s, __pos, traits_type::length(__s));
@ -4846,7 +4855,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
rfind(const basic_string& __str, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->rfind(__str.data(), __pos, __str.size()); }
/**
@ -4862,7 +4871,8 @@ _GLIBCXX_END_NAMESPACE_CXX11
* npos.
*/
size_type
rfind(const _CharT* __s, size_type __pos, size_type __n) const;
rfind(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT;
/**
* @brief Find last position of a C string.
@ -4875,7 +4885,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
* where it begins. If not found, returns npos.
*/
size_type
rfind(const _CharT* __s, size_type __pos = npos) const
rfind(const _CharT* __s, size_type __pos = npos) const _GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
return this->rfind(__s, __pos, traits_type::length(__s));
@ -4907,7 +4917,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_first_of(const basic_string& __str, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->find_first_of(__str.data(), __pos, __str.size()); }
/**
@ -4923,7 +4933,8 @@ _GLIBCXX_END_NAMESPACE_CXX11
* returns npos.
*/
size_type
find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT;
/**
* @brief Find position of a character of C string.
@ -4937,6 +4948,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_first_of(const _CharT* __s, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
return this->find_first_of(__s, __pos, traits_type::length(__s));
@ -4971,7 +4983,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_last_of(const basic_string& __str, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->find_last_of(__str.data(), __pos, __str.size()); }
/**
@ -4987,7 +4999,8 @@ _GLIBCXX_END_NAMESPACE_CXX11
* returns npos.
*/
size_type
find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT;
/**
* @brief Find last position of a character of C string.
@ -5001,6 +5014,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_last_of(const _CharT* __s, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
return this->find_last_of(__s, __pos, traits_type::length(__s));
@ -5034,7 +5048,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_first_not_of(const basic_string& __str, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->find_first_not_of(__str.data(), __pos, __str.size()); }
/**
@ -5051,7 +5065,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_first_not_of(const _CharT* __s, size_type __pos,
size_type __n) const;
size_type __n) const _GLIBCXX_NOEXCEPT;
/**
* @brief Find position of a character not in C string.
@ -5065,6 +5079,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_first_not_of(const _CharT* __s, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
return this->find_first_not_of(__s, __pos, traits_type::length(__s));
@ -5082,7 +5097,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_first_not_of(_CharT __c, size_type __pos = 0) const
_GLIBCXX_NOEXCEPT;
_GLIBCXX_NOEXCEPT;
/**
* @brief Find last position of a character not in string.
@ -5097,7 +5112,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_last_not_of(const basic_string& __str, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT
_GLIBCXX_NOEXCEPT
{ return this->find_last_not_of(__str.data(), __pos, __str.size()); }
/**
@ -5114,7 +5129,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_last_not_of(const _CharT* __s, size_type __pos,
size_type __n) const;
size_type __n) const _GLIBCXX_NOEXCEPT;
/**
* @brief Find last position of a character not in C string.
* @param __s C string containing characters to avoid.
@ -5128,6 +5143,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_last_not_of(const _CharT* __s, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
return this->find_last_not_of(__s, __pos, traits_type::length(__s));
@ -5145,7 +5161,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
size_type
find_last_not_of(_CharT __c, size_type __pos = npos) const
_GLIBCXX_NOEXCEPT;
_GLIBCXX_NOEXCEPT;
/**
* @brief Get a substring.
@ -5255,7 +5271,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
* ordered first.
*/
int
compare(const _CharT* __s) const;
compare(const _CharT* __s) const _GLIBCXX_NOEXCEPT;
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 5 String::compare specification questionable

View File

@ -1186,6 +1186,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename basic_string<_CharT, _Traits, _Alloc>::size_type
basic_string<_CharT, _Traits, _Alloc>::
find(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string_len(__s, __n);
const size_type __size = this->size();
@ -1227,6 +1228,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename basic_string<_CharT, _Traits, _Alloc>::size_type
basic_string<_CharT, _Traits, _Alloc>::
rfind(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string_len(__s, __n);
const size_type __size = this->size();
@ -1265,6 +1267,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename basic_string<_CharT, _Traits, _Alloc>::size_type
basic_string<_CharT, _Traits, _Alloc>::
find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string_len(__s, __n);
for (; __n && __pos < this->size(); ++__pos)
@ -1280,6 +1283,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename basic_string<_CharT, _Traits, _Alloc>::size_type
basic_string<_CharT, _Traits, _Alloc>::
find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string_len(__s, __n);
size_type __size = this->size();
@ -1301,6 +1305,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename basic_string<_CharT, _Traits, _Alloc>::size_type
basic_string<_CharT, _Traits, _Alloc>::
find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string_len(__s, __n);
for (; __pos < this->size(); ++__pos)
@ -1324,6 +1329,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename basic_string<_CharT, _Traits, _Alloc>::size_type
basic_string<_CharT, _Traits, _Alloc>::
find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
_GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string_len(__s, __n);
size_type __size = this->size();
@ -1397,7 +1403,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _CharT, typename _Traits, typename _Alloc>
int
basic_string<_CharT, _Traits, _Alloc>::
compare(const _CharT* __s) const
compare(const _CharT* __s) const _GLIBCXX_NOEXCEPT
{
__glibcxx_requires_string(__s);
const size_type __size = this->size();