Re: [Boost-bugs] [Boost C++ Libraries] #9518: string_ref::rfind return value offset

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #9518: string_ref::rfind return value offset
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-08-13 09:26:15


#9518: string_ref::rfind return value offset
-------------------------------------+---------------------------
  Reporter: Peter A. Bigot <pab@…> | Owner: no-maintainer
      Type: Bugs | Status: new
 Milestone: To Be Determined | Component: utility
   Version: Boost 1.55.0 | Severity: Problem
Resolution: | Keywords:
-------------------------------------+---------------------------

Comment (by bibmaster@…):

 Replying to [comment:1 bimaster@…]:
> proposed fix (not fixed yet in 1.59.beta):
> {{{#!C++
> size_type rfind(basic_string_ref x, size_t pos = npos) const {
> const_reverse_iterator s = this->crbegin();
> const_reverse_iterator e = this->crend();
> if(pos < size()) s += pos;
> const_reverse_iterator iter = std::search(s, e, x.crbegin(),
 x.crend(), traits::eq);
> // the only case where substring is searched, reverse_distance not
 applicable
> return iter == e ? npos : len_ - std::distance(this->crbegin(),
 iter) - x.size();
> }
> }}}
 ooops, pos in std::string denotes offset from start, so
 {{{#!C++
 if(pos < size()) s += (size() - pos);
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/9518#comment:2>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:18 UTC