Proposed resolution:
Change [util.smartptr.weak]/2 as described, the intention is to fix the now no longer valid requirement that weak_ptr is LessComparable [Note the deleted comma]:
Specializations of weak_ptr shall be CopyConstructible
,and CopyAssignable,and LessThanComparable,allowing their use in standard containers.
In [util.smartptr.weak.obs] remove the paragraphs 9-11 including prototype:
template<class T, class U> bool operator<(const weak_ptr<T>& a, const weak_ptr<U>& b);
Returns: an unspecified value such that
operator< is a strict weak ordering as described in 25.4;under the equivalence relation defined by operator<, !(a < b) && !(b < a), two weak_ptr instances are equivalent if and only if they share ownership or are both empty.
Throws: nothing.
[Note: Allows weak_ptr objects to be used as keys in associative containers. — end note]