starts_with()
overloads should be called "begins_with
"Section: 27.4.3 [basic.string], 27.3.3 [string.view.template] Status: NAD Submitter: Gennaro Prota Opened: 2018-10-22 Last modified: 2020-08-21
Priority: 2
View other active issues in [basic.string].
View all other issues in [basic.string].
View all issues with NAD status.
Discussion:
Throughout the standard library, the opposite of the verb "to end" is "to begin", not to "to start". In this
respect, all the overloads of std::basic_string::starts_with
and std::basic_string_view::starts_with
are named inconsistently. These calls were added in P0457R2, which refers
to analogous functions in Java, Python, Qt, LLVM, WebKit, all of which use the term "start". But, in our opinion,
the C++ standard library should first be consistent with itself.
[2018-11: Referred to LEWG after reflector discussion.]
[2020-05-28; LEWG issue reviewing]
LEWG issue processing voted to reject 3165 as NAD. Status change to Open.
Reject LWG3165 as NAD SF F N A SA 21 1 0 1 0
[2020-08-21; Issue processing telecon: moved to NAD based on LEWG recommendation]
Proposed resolution:
This wording is relative to N4778.
Change 27.4.3 [basic.string], class template basic_string
synopsis, as indicated:
bool beginstarts_with(basic_string_view<charT, traits> x) const noexcept; bool beginstarts_with(charT x) const noexcept; bool beginstarts_with(const charT* x) const;
Change 27.4.3.8.5 [string.starts.with] as indicated
bool beginstarts_with(basic_string_view<charT, traits> x) const noexcept; bool beginstarts_with(charT x) const noexcept; bool beginstarts_with(const charT* x) const;-1- Effects: Equivalent to:
return basic_string_view<charT, traits>(data(), size()).beginstarts_with(x);
Change 27.3.3 [string.view.template], class template basic_string_view
synopsis, as indicated:
constexpr bool beginstarts_with(basic_string_view x) const noexcept; constexpr bool beginstarts_with(charT x) const noexcept; constexpr bool beginstarts_with(const charT* x) const;
Change 27.3.3.8 [string.view.ops] as indicated:
constexpr bool beginstarts_with(basic_string_view x) const noexcept;-20- Effects: Equivalent to:
return compare(0, npos, x) == 0;
constexpr bool beginstarts_with(charT x) const noexcept;-21- Effects: Equivalent to:
return begin
starts_with(basic_string_view(&x, 1));constexpr bool beginstarts_with(const charT* x) const;-22- Effects: Equivalent to:
return begin
starts_with(basic_string_view(x));