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: 32.9 [re.results] Status: NAD Editorial Submitter: Nozomu Katoo Opened: 2007-05-27 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [re.results].
View all issues with NAD Editorial status.
Discussion:
In 32.3 [re.syn] of N2284, two template functions are declared here:
// 28.10, class template match_results: <snip> // match_results comparisons template <class BidirectionalIterator, class Allocator> bool operator== (const match_results<BidirectionalIterator, Allocator>& m1, const match_results<BidirectionalIterator, Allocator>& m2); template <class BidirectionalIterator, class Allocator> bool operator!= (const match_results<BidirectionalIterator, Allocator>& m1, const match_results<BidirectionalIterator, Allocator>& m2); // 28.10.6, match_results swap:
But the details of these two bool operator functions (i.e., which members of match_results should be used in comparison) are not described in any following sections.
[ John adds: ]
That looks like a bug: operator== should return true only if the two objects refer to the same match - ie if one object was constructed as a copy of the other.
[ Kona (2007): Bill and Pete to add minor wording to that proposed in N2409. ]
Proposed resolution:
Add a new section after 32.9.8 [re.results.swap], which reads:
28.10.7 match_results non-member functions.
template<class BidirectionalIterator, class Allocator> bool operator==(const match_results<BidirectionalIterator, Allocator>& m1, const match_results<BidirectionalIterator, Allocator>& m2);Returns: true only if the two objects refer to the same match.
template<class BidirectionalIterator, class Allocator> bool operator!=(const match_results<BidirectionalIterator, Allocator>& m1, const match_results<BidirectionalIterator, Allocator>& m2);Returns: !(m1 == m2).
template<class BidirectionalIterator, class Allocator> void swap(match_results<BidirectionalIterator, Allocator>& m1, match_results<BidirectionalIterator, Allocator>& m2);Returns: m1.swap(m2).
[ Bellevue: Proposed wording now in WP. ]