X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/48580b7729ed54c60acc262d86e12fe547b6b2b5..e167326c1369032305b7eb87e166b12d6690df64:/include/xbt/config.hpp diff --git a/include/xbt/config.hpp b/include/xbt/config.hpp index 7b2d7a432b..8200bf06c6 100644 --- a/include/xbt/config.hpp +++ b/include/xbt/config.hpp @@ -30,7 +30,7 @@ public: : std::runtime_error(what) {} explicit missing_key_error(const char* what) : std::runtime_error(what) {} - ~missing_key_error() noexcept; + ~missing_key_error() override; }; template inline @@ -104,7 +104,6 @@ void alias(std::initializer_list names) template void bindFlag(T& value, const char* name, const char* description) { - using namespace std; declareFlag(name, description, value, [&value](T const& val) { value = val; }); @@ -125,7 +124,7 @@ void bindFlag(T& value, std::initializer_list names, const char* de * if (x < x_min || x => x_max) * throw std::range_error("must be in [x_min, x_max)") * }); - * + * */ // F is a checker, F : T& -> () template @@ -159,7 +158,7 @@ bindFlag(T& value, const char* name, const char* description, *

  *  static int x;
  *  simgrid::config::bindFlag(a, "x", [](int x) { return return x > 0; });
- *  
+ * */ // F is a predicate, F : T const& -> bool template @@ -220,14 +219,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 + Flag& operator=(U const& that) { value_ = that; return *this; } + template + Flag& operator=(U && that) { value_ = that; return *this; } + template + bool operator==(U const& that) const { return value_ == that; } + template + bool operator!=(U const& that) const { return value_ != that; } + template + bool operator<(U const& that) const { return value_ < that; } + template + bool operator>(U const& that) const { return value_ > that; } + template + bool operator<=(U const& that) const { return value_ <= that; } + template + bool operator>=(U const& that) const { return value_ >= that; } }; }