Boost logo

Boost :

Subject: [boost] Boost.Variant is not EqualityComparable
From: Brook Milligan (brook_at_[hidden])
Date: 2009-05-25 21:56:19


I just ran into the case that Boost Variant does not satisfy the
EqualityComparable concept. While it provides operator==() and
operator<() (and therefore is LessThanComparable), it does not provide
operator!=(), which is required for the EqualityComparable concept.

Is this by design or oversight? It seems reasonable to expect that a
Boost Variant model this concept, but perhaps I am missing something.

In case it is by oversight, the following patch seems to provide the
missing operator.

Cheers,
Brook

--- boost/variant/variant.hpp.orig 2009-05-13 21:21:59.000000000 -0600
+++ boost/variant/variant.hpp 2009-05-25 19:21:40.000000000 -0600
@@ -1681,6 +1681,8 @@
         return rhs.apply_visitor(visitor);
     }
 
+ bool operator!=(const variant& rhs) const { return !(*this == rhs); }
+
     bool operator<(const variant& rhs) const
     {
         //


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk