regex_constants::nosubs
affect basic_regex::mark_count()
?Section: 28.6.4.2 [re.synopt] Status: C++14 Submitter: Jonathan Wakely Opened: 2014-02-01 Last modified: 2017-09-07
Priority: 0
View all other issues in [re.synopt].
View all issues with C++14 status.
Discussion:
As discussed in c++std-lib-35399 and its replies,
I can see two possible interpretations of the effects of regex_constants::nosubs
:
The effect of nosubs
only applies during matching. Parentheses are
still recognized as marking a sub-expression by the basic_regex
compiler, and basic_regex::mark_count()
still returns the number of
marked sub-expressions, but anything they match is not stored in the
results. This means it is not always true that results.size() == r.mark_count() + 1
for a successful match.
nosubs
affects how a regular expression is compiled, altering the
state of the std::basic_regex
object so that mark_count()
returns
zero. This also affects any subsequent matching.
The definition of nosubs
should make this clear.
nosubs
only has
effects during matching, which is (1), but all known implementations
do (2). John Maddock confirmed that (2) was intended.
[Issaquah 2014-02-12: Move to Immediate]
Proposed resolution:
This wording is relative to N3797.
Apply the following edit to the table in 28.6.4.2 [re.synopt]/1
Specifies that no sub-expressions shall be considered to be marked, so that when a regular expression is matched against a character container sequence, no sub-expression matches shall be stored in the supplied
match_results
structure.