+template <class T>
+XBT_PUBLIC void declareFlag(const char* name, const char* description, T value,
+ std::function<void(const T&)> callback = std::function<void(const T&)>());
+
+extern template XBT_PUBLIC void declareFlag(const char* name, const char* description, int value,
+ std::function<void(int const&)> callback);
+extern template XBT_PUBLIC void declareFlag(const char* name, const char* description, double value,
+ std::function<void(double const&)> callback);
+extern template XBT_PUBLIC void declareFlag(const char* name, const char* description, bool value,
+ std::function<void(bool const&)> callback);
+extern template XBT_PUBLIC void declareFlag(const char* name, const char* description, std::string value,
+ std::function<void(std::string const&)> callback);
+
+// ***** alias *****
+
+XBT_PUBLIC void alias(const char* realname, const char* aliasname);
+
+inline
+void alias(std::initializer_list<const char*> names)
+{
+ auto i = names.begin();
+ for (++i; i != names.end(); ++i)
+ alias(*names.begin(), *i);
+}