diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2018-07-02 21:31:11 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2018-07-02 21:31:11 +0100 |
commit | e112d53acae3d4ce8783d8fd5f396cc45443c010 (patch) | |
tree | 0ce793bb9ddf0b5a31d715e478ac9641fd822081 /gcc | |
parent | dbf96d49454d608b5cb9e39e341e13b60ec7965e (diff) | |
download | gcc-e112d53acae3d4ce8783d8fd5f396cc45443c010.zip gcc-e112d53acae3d4ce8783d8fd5f396cc45443c010.tar.gz gcc-e112d53acae3d4ce8783d8fd5f396cc45443c010.tar.bz2 |
Optimize std::sub_match comparisons using string_view-like type
Avoid creation of unnecessary basic_string objects by using a simplified
string_view type and performing comparisons on that type instead. A
temporary basic_string object is still used when the sub_match's
iterators are not contiguous, in order to get an object that the
__string_view can reference.
* include/bits/regex.h (sub_match::operator string_type): Call str().
(sub_match::compare): Use _M_str() instead of str().
(sub_match::_M_compare): New public function.
(sub_match::__string_view): New helper type.
(sub_match::_M_str): New overloaded functions to avoid creating a
string_type object when not needed.
(operator==, operator!=, operator<, operator>, operator<=, operator>=):
Use sub_match::_M_compare instead of creating string_type objects.
Fix Doxygen comments.
* include/bits/regex_compiler.h (__has_contiguous_iter): Remove.
(__is_contiguous_normal_iter): Rename to __is_contiguous_iter and
simplify.
(__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use
__enable_if_t.
* include/std/type_traits (__enable_if_t): Define for C++11.
* testsuite/28_regex/sub_match/compare.cc: New.
* testsuite/util/testsuite_iterators.h (remove_cv): Add transformation
trait.
(input_iterator_wrapper): Use remove_cv for value_type argument of
std::iterator base class.
From-SVN: r262318
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions