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
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.");
+ 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>
*/