aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2018-07-02 21:31:11 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2018-07-02 21:31:11 +0100
commite112d53acae3d4ce8783d8fd5f396cc45443c010 (patch)
tree0ce793bb9ddf0b5a31d715e478ac9641fd822081 /gcc
parentdbf96d49454d608b5cb9e39e341e13b60ec7965e (diff)
downloadgcc-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