Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[config] More general comparators for Flag
authorGabriel Corona <gabriel.corona@loria.fr>
Tue, 3 May 2016 10:08:50 +0000 (12:08 +0200)
committerGabriel Corona <gabriel.corona@loria.fr>
Tue, 3 May 2016 10:08:51 +0000 (12:08 +0200)
Fix ambiguity in overload resolution

include/xbt/config.hpp

index 7b2d7a4..1758b74 100644 (file)
@@ -220,14 +220,22 @@ public:
   operator T const&() const{ return value_; }
 
   // Basic interop with T:
-  Flag& operator=(T const& that) { value_ = that; return *this; }
-  Flag& operator=(T && that)     { value_ = that; return *this; }
-  bool operator==(T const& that) const { return value_ == that; }
-  bool operator!=(T const& that) const { return value_ != that; }
-  bool operator<(T const& that) const { return value_ < that; }
-  bool operator>(T const& that) const { return value_ > that; }
-  bool operator<=(T const& that) const { return value_ <= that; }
-  bool operator>=(T const& that) const { return value_ >= that; }
+  template<class U>
+  Flag& operator=(U const& that) { value_ = that; return *this; }
+  template<class U>
+  Flag& operator=(U && that)     { value_ = that; return *this; }
+  template<class U>
+  bool operator==(U const& that) const { return value_ == that; }
+  template<class U>
+  bool operator!=(U const& that) const { return value_ != that; }
+  template<class U>
+  bool operator<(U const& that) const { return value_ < that; }
+  template<class U>
+  bool operator>(U const& that) const { return value_ > that; }
+  template<class U>
+  bool operator<=(U const& that) const { return value_ <= that; }
+  template<class U>
+  bool operator>=(U const& that) const { return value_ >= that; }
 };
 
 }