stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Sebor (JIRA)" <>
Subject [jira] Commented: (STDCXX-272) std::string::find_first_of() returns 0 for the empty string
Date Tue, 27 Feb 2007 21:28:05 GMT


Martin Sebor commented on STDCXX-272:

You just did (reproduce it): it aborted for you as well :)

To answer your question: max_size() is a valid argument to find_first_of because there is
no text that says is it isn't.

The requirement you cite (that n should be less than npos) applies to to the string ctor in
21.3.2 but not to find_first_of. Returns clauses impose only one requirement: on the value
returned by the function (see [structure.specifications]). Requirements on the observable
side-effects of function calls (such as calls to other, for instance virtual, functions),
are imposed by Effects clauses. The requirements on exceptions to be thrown are typically
imposed by Throws clauses (although an Effects clause may impose the same requirement if the
called function throws).

I filed a new issue for this some time ago. See:
It's not on the official LWG issues list yet but it will be in the next mailing (in about
two weeks).

> std::string::find_first_of() returns 0 for the empty string
> -----------------------------------------------------------
>                 Key: STDCXX-272
>                 URL:
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: 21. Strings
>    Affects Versions: 4.1.3, 4.1.2
>         Environment: all
>            Reporter: Martin Sebor
>         Assigned To: Martin Sebor
> The program below is expected to run succeffully to completion (since the returned value
must be less than the size of the string) but instead it aborts.
> $ cat t.cpp && nice gmake t && ./t
> #include <cassert>
> #include <string>
> int main ()
> {
>     std::string::size_type xpos =
>         std::string ("").find_first_of ("cba", 0, std::string::npos);
>     assert (std::string::npos == xpos);
> }
> aCC -c -I/amd/devco/sebor/dev/stdlib/include/ansi -I/usr/include  -D_RWSTDDEBUG    -D_RWSTD_USE_CONFIG
-I/amd/devco/sebor/dev/stdlib/include -I/build/sebor/aCC-3.70-11d/include -I/amd/devco/sebor/dev/stdlib/examples/include
 -Aa +nostl  -g +d  +w +W392 +W655 +W684 +W818 +W819 +W849  t.cpp
> aCC t.o -o t -Aa +nostl -Wl,+s -Wl,+vnocompatwarnings -L/build/sebor/aCC-3.70-11d/lib
   -L/build/sebor/aCC-3.70-11d/lib -lstd11d   -lm
> ABORT instruction (core dumped)

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message