**Section:** 31.11.2 [re.alg.match], 31.11.3 [re.alg.search] **Status:** C++14
**Submitter:** Pete Becker **Opened:** 2012-10-24 **Last modified:** 2017-07-06

**Priority: **0

**View all other** issues in [re.alg.match].

**View all issues with** C++14 status.

**Discussion:**

Table 142 lists post-conditions on the `match_results` object when a call to `regex_match` succeeds.
`regex_match` is required to match the entire target sequence. The post-condition for `m[0].matched`
is "true if a full match was found." Since these are conditions for a successful search which is, by definition,
a full match, the post-condition should be simply "true".

There's an analogous probem in Table 143: the condition for `m[0].matched` is "true if a match was found,
false otherwise." But Table 143 gives post-conditions for a successful match, so the condition should be simply
"true".

Furthermore, they have explicit requirements for `m[0].first`, `m[0].second`, and `m[0].matched`.
They also have requirements for the other elements of `m`, described as `m[n].first`, `m[n].second`,
and `m[n].matched`, in each case qualifying the value of `n` as "for `n < m.size()`". Since
there is an explicit description for `n == 0`, this qualification should be "for `0 < n < m.size()`"
in all 6 places.

*[Issaquah 2014-02-11: Move to Immediate]*

**Proposed resolution:**

This wording is relative to N3376.

Change Table 142 as indicated:

Table 142 — Effects of `regex_match`algorithmElement Value `…``m[0].first``first``m[0].second``last``m[0].matched``true`~~if a full match was found.~~`m[n].first`For all integers `0 < n < m.size()`, the start of the sequence that matched sub-expression`n`.

Alternatively, if subexpression`n`did not participate in the match, then`last`.`m[n].second`For all integers `0 < n < m.size()`, the end of the sequence that matched sub-expression`n`.

Alternatively, if sub-expression`n`did not participate in the match, then`last`.`m[n].matched`For all integers `0 < n < m.size()`,`true`if sub-expression`n`participated in the match,`false`otherwise.Change Table 143 as indicated:

Table 143 — Effects of `regex_search`algorithmElement Value `…``m[0].first`The start of the sequence of characters that matched the regular expression `m[0].second`The end of the sequence of characters that matched the regular expression `m[0].matched``true`~~if a match was found, and false otherwise.~~`m[n].first`For all integers `0 < n < m.size()`, the start of the sequence that matched sub-expression`n`.

Alternatively, if subexpression`n`did not participate in the match, then`last`.`m[n].second`For all integers `0 < n < m.size()`, the end of the sequence that matched sub-expression`n`.

Alternatively, if sub-expression`n`did not participate in the match, then`last`.`m[n].matched`For all integers `0 < n < m.size()`,`true`if sub-expression`n`participated in the match,`false`otherwise.