This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of NAD Editorial status.
Section: 28.6.11.2.2 [re.tokiter.cnstr] Status: NAD Editorial Submitter: Daniel Krügler Opened: 2007-03-03 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [re.tokiter.cnstr].
View all issues with NAD Editorial status.
Discussion:
In 28.6.11.2.2 [re.tokiter.cnstr]/1+2 both the constructor declaration and the following text shows some obvious typos:
1) The third constructor form is written as
template <std::size_t N>
regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b,
const regex_type& re,
const int (&submatches)[R],
regex_constants::match_flag_type m =
regex_constants::match_default);
where the dimensions of submatches are specified by an unknown value R, which should be N.
2) Paragraph 2 of the same section says in its last sentence:
The third constructor initializes the member
substo hold a copy of the sequence of integer values pointed to by the iterator range[&submatches, &submatches + R).
where again R must be replaced by N.
3) Paragraph 3 of the same section says in its first sentence:
Each constructor then sets
Nto0, andpositiontoposition_iterator(a, b, re, f).
where a non-existing parameter "f" is mentioned, which must be replaced by the parameter "m".
Proposed resolution:
Change 28.6.11.2.2 [re.tokiter.cnstr]/1:
template <std::size_t N>
regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b,
const regex_type& re,
const int (&submatches)[R N],
regex_constants::match_flag_type m =
regex_constants::match_default);
Change 28.6.11.2.2 [re.tokiter.cnstr]/2:
Effects: The first constructor initializes the member
substo hold the single valuesubmatch. The second constructor initializes the membersubsto hold a copy of the argumentsubmatches. The third constructor initializes the membersubsto hold a copy of the sequence of integer values pointed to by the iterator range[&submatches, &submatches +.RN)
Change 28.6.11.2.2 [re.tokiter.cnstr]/3:
Each constructor then sets
Nto0, andpositiontoposition_iterator(a, b, re,. Iffm)positionis not an end-of-sequence iterator the constructor setsresultto the address of the current match. Otherwise if any of the values stored insubsis equal to-1the constructor sets*thisto a suffix iterator that points to the range[a, b), otherwise the constructor sets*thisto an end-of-sequence iterator.