This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of CD1 status.

### 681. Operator functions impossible to compare are defined in [re.submatch.op]

Section: 30.8.3 [re.submatch.op] Status: CD1 Submitter: Nozomu Katoo Opened: 2007-05-27 Last modified: 2016-01-28

Priority: Not Prioritized

View all other issues in [re.submatch.op].

View all issues with CD1 status.

Discussion:

In 30.8.3 [re.submatch.op] of N2284, operator functions numbered 31-42 seem impossible to compare. E.g.:

>     template <class BiIter>
>        bool operator==(typename iterator_traits<BiIter>::value_type const& lhs,
>                         const sub_match<BiIter>& rhs);

> > -31- Returns: `lhs == rhs.str()`.

When `char*` is used as `BiIter`, `iterator_traits<BiIter>::value_type` would be `char`, so that `lhs == rhs.str()` ends up comparing a `char` value and an object of `std::basic_string<char>`. However, the behaviour of comparison between these two types is not defined in 21.3.4 [string.nonmembers] of N2284. This applies when `wchar_t*` is used as `BiIter`.

Proposed resolution:

Adopt the proposed resolution in N2409.

[ Kona (2007): The LWG adopted the proposed resolution of N2409 for this issue. The LWG voted to accelerate this issue to Ready status to be voted into the WP at Kona. ]