This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++11 status.
Section: 20.5 [allocator.adaptor] Status: C++11 Submitter: Pablo Halpern Opened: 2009-02-11 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [allocator.adaptor].
View all issues with C++11 status.
Discussion:
The WP (N3000) contains these declarations:
template <class OuterA1, class OuterA2, class... InnerAllocs> bool operator==(const scoped_allocator_adaptor<OuterA1, InnerAllocs...>& a, const scoped_allocator_adaptor<OuterA2, InnerAllocs...>& b); template <class OuterA1, class OuterA2, class... InnerAllocs> bool operator!=(const scoped_allocator_adaptor<OuterA1, InnerAllocs...>& a, const scoped_allocator_adaptor<OuterA2, InnerAllocs...>& b);
But does not define what the behavior of these operators are.
[ Post-Rapperswil: ]
Moved to Tentatively Ready after 5 positive votes on c++std-lib.
[ Adopted at 2010-11 Batavia ]
Proposed resolution:
Add a new section after 20.5.4 [allocator.adaptor.members]:
Scoped allocator operators [scoped.adaptor.operators]
template <class OuterA1, class OuterA2, class... InnerAllocs> bool operator==(const scoped_allocator_adaptor<OuterA1, InnerAllocs...>& a, const scoped_allocator_adaptor<OuterA2, InnerAllocs...>& b);Returns:
a.outer_allocator() == b.outer_allocator()
ifsizeof...(InnerAllocs)
is zero; otherwise,a.outer_allocator() == b.outer_allocator() && a.inner_allocator() == b.inner_allocator()
.template <class OuterA1, class OuterA2, class... InnerAllocs> bool operator!=(const scoped_allocator_adaptor<OuterA1, InnerAllocs...>& a, const scoped_allocator_adaptor<OuterA2, InnerAllocs...>& b);Returns:
!(a == b)
.