shared_ptr.h: Update comparisons to match WP.
authorJonathan Wakely <jwakely.gcc@gmail.com>
Sat, 1 Nov 2008 11:29:06 +0000 (11:29 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sat, 1 Nov 2008 11:29:06 +0000 (11:29 +0000)
commit8dd5e93af60784985b22b8af909469d57ee6abdb
tree14906af50b00e041275a9ac91a01e1c0105ad5d1
parent1b867ae782244908713c24c26f526e65a35f6d12
shared_ptr.h: Update comparisons to match WP.

2008-11-01  Jonathan Wakely  <jwakely.gcc@gmail.com>

        * include/bits/shared_ptr.h: Update comparisons to match WP.
        (_Sp_counted_ptr): Make copy and assignment members deleted.
        (_Sp_counted_deleter): Remove private copy and assignment members.
        (__shared_count::_M_less,__weak_count::_M_less,operator<): Replace
        friend operator< with overloaded _M_less member functions to allow
        comparison with either shared_count or weak_count.
        (__shared_ptr::_M_less,__weak_ptr::_M_less): Replace with...
        (__shared_ptr::owner_before,__weak_ptr::owner_before): New overloads
        for ownership-based ordering.
        (operator<(__shared_ptr,__shared_ptr)): Compare stored pointers,
        make non-friend.
        (operator==(__shared_ptr,__shared_ptr)): Make non-friend.
        (operator!=(__shared_ptr,__shared_ptr)): Likewise.
        (less<__shared_ptr<>>,less<shared_ptr<>>,_Sp_less): Explicitly call
        pointer specialization.
        (__weak_ptr::operator<,weak_ptr::operator<=,weak_ptr::operator>,
        weak_ptr::operator>=): Remove operator< and delete all comparisons.
        (_Sp_owner_less,owner_less): Predicate for ownership-based ordering.
        (operator<(shared_ptr,shared_ptr): Overload for derived shared_ptr.
        (operator==(shared_ptr,shared_ptr): Likewise.
        (operator!=(shared_ptr,shared_ptr): Likewise.
        (swap(shared_ptr,shared_ptr)): Fix parameter types.
        (swap(weak_ptr,weak_ptr)): Add missing overload.
        * testsuite/20_util/owner_less/cmp.cc: New.
        * testsuite/20_util/shared_ptr/comparison/cmp.cc: Test other ops.
        * testsuite/20_util/shared_ptr/comparison/less.cc: New.
        * testsuite/20_util/shared_ptr/observers/owner_before.cc: New.
        * testsuite/20_util/weak_ptr/observers/owner_before.cc: New.
        * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: New.

From-SVN: r141512
12 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/shared_ptr.h
libstdc++-v3/testsuite/20_util/owner_less/cmp.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc
libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc [new file with mode: 0644]