Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of github.com:simgrid/simgrid
authorMartin Quinson <martin.quinson@loria.fr>
Fri, 30 Mar 2018 22:15:57 +0000 (00:15 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Fri, 30 Mar 2018 22:15:57 +0000 (00:15 +0200)
1  2 
include/xbt/config.hpp

diff --combined include/xbt/config.hpp
@@@ -145,17 -145,19 +145,19 @@@ typename std::enable_if<std::is_same
  bindFlag(T& value, const char* name, const char* description,
    F callback)
  {
-   declareFlag(name, description, value, [&value,callback](const T& val) {
-     callback(val);
-     value = std::move(val);
-   });
+   declareFlag(name, description, value,
+     std::function<void(const T&)>([&value,callback](const T& val) {
+       callback(val);
+       value = std::move(val);
+     }
+   ));
  }
  
  /** Bind a variable to configuration flag
   *
   *  <pre><code>
   *  static int x;
 - *  simgrid::config::bindFlag(a, "x", [](int x) { return return x > 0; });
 + *  simgrid::config::bindFlag(a, "x", [](int x) { return x > 0; });
   *  </code></pre>
   */
  // F is a predicate, F : T const& -> bool
@@@ -167,18 -169,20 +169,20 @@@ typename std::enable_if<std::is_same
  bindFlag(T& value, const char* name, const char* description,
    F callback)
  {
-   declareFlag(name, description, value, [&value, callback](const T& val) {
-     if (not callback(val))
-       throw std::range_error("invalid value.");
-     value = std::move(val);
-   });
+   declareFlag(name, description, value,
+     std::function<void(const T&)>([&value, callback](const T& val) {
+       if (not callback(val))
 -        throw std::range_error("invalid value");
++        throw std::range_error("invalid value.");
+         value = std::move(val);
+     })
+   );
  }
  
  /** A variable bound to a CLI option
   *
   *  <pre><code>
   *  static simgrid::config::flag<int> answer("answer", "Expected answer", 42);
 - *  static simgrid::config::flag<std::string> name("name", "Ford Prefect", "John Doe");
 + *  static simgrid::config::flag<std::string> name("name", "Ford Perfect", "John Doe");
   *  static simgrid::config::flag<double> gamma("gamma", "Gamma factor", 1.987);
   *  </code></pre>
   */