3261. regex components' noexcept annotations appear broken for POCMA or throwing BidirectionalIterator

Section: 32.7 [re.regex], 32.9 [re.results] Status: New Submitter: Billy O'Neal III Opened: 2019-08-17 Last modified: 2019-10-07 02:21:30 UTC

Priority: 3

View all other issues in [re.regex].

View all issues with New status.

Discussion:

std::basic_regex and std::match_results have noexcept move construction, and std::basic_regex has noexcept move assignment, but both of them have throwing swaps. We probably need an Expects: or something to say that BidirectionalIterator doesn't throw through these operations. We probably also need match_results::operator= to respect propagate_on_container_move_assignment (and maybe the copy ctor respect propagate_on_container_copy_assignment).

[2019-09-02; Tim Song comments]

The issue is related to LWG 2490.

[2019-10 Priority set to 3 after reflector discussion]

Proposed resolution: