Arkadiy Vertleyb wrote:
> If I understand correctly, with your approach:
> 
> (a, b, null) == (a, b, c1), and
> (a, b, null) == (a, b, c2), but
> (a, b, c1) != (a, b, c2)
> 
> If this is correct, I am afraid that whether or not such a predicate
> works correctly may depend on a particular implementation of
> std::set...? 

It shouldn't.  Once you define the strict weak ordering, set's behavior is well 
defined.  The compare function would look like this:

// Returns true iff first element is less than second.
struct Compare {
    bool operator()(Key const& t1, Key const& t2) {
        for n = 1 to number of fields:
            if nth field in t1 == null or nth field in t2 == null:
                return false
            if nth field in t1 < nth field in t2:
                return true
        return false
    }
};

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to