This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 11/30/18 5:33 AM, Jonathan Wakely wrote:
On 29/11/18 21:35 -0500, Ed Smith-Rowland wrote:Greetings,This patch implements starts_with and ends_with for basic_string and basic_string_view for C++20.This was on my TODO list, thanks for taking care of it.+#if __cplusplus > 201703L + bool+ starts_with(basic_string_view<_CharT, _Traits> __x) const noexcept + { return __sv_type(this->data(), this->size()).starts_with(__x); }+ + bool + starts_with(_CharT __x) const noexcept+ { return __sv_type(this->data(), this->size()).starts_with(__x); }+ + bool + starts_with(const _CharT* __x) constThis can be noexcept. It isn't in the standard, because it has a narrow contract (there's a precondition that __x is null-terminated). But since we can't reliably detect whether __x is null-terminated, and even if we could we wouldn't want to throw an exception, we can just make it noexcept. Same for the ends_with(const _CharT*) one, and the equivalent members in the COW basic_string and basic_string_view.Index: include/std/string_view =================================================================== --- include/std/string_view (revision 266645) +++ include/std/string_view (working copy) @@ -227,7 +227,6 @@ __sv = __tmp; } - // [string.view.ops], string operations: size_type @@ -387,6 +386,36 @@ traits_type::length(__str)); } +#if __cplusplus > 201703L + constexpr bool + starts_with(basic_string_view __x) const noexcept + { return this->size() >= __x.size() + && this->compare(0, __x.size(), __x) == 0; }Please put the opening and closing braces on their own lines, as for ends_with below:+ constexpr bool + ends_with(basic_string_view __x) const noexcept + { + return this->size() >= __x.size() + && this->compare(this->size() - __x.size(), npos, __x) == 0; + }OK with those changes, thanks
Committed 266674. New patch attached. Ed
Attachment:
CL_se_with
Description: Text document
Attachment:
patch_se_with
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |