-template <class T, class F>
-typename std::enable_if<std::is_same<void, decltype(std::declval<F>()(std::declval<const T&>()))>::value, void>::type
-bind_flag(T& value, const char* name, std::initializer_list<const char*> aliases, const char* description,
- const std::map<T, std::string>& valid_values, F callback)
+template <class F>
+typename std::enable_if_t<std::is_same<void, decltype(std::declval<F>()(std::declval<const std::string&>()))>::value,
+ void>
+bind_flag(std::string& value, const char* name, std::initializer_list<const char*> aliases, const char* description,
+ const std::map<std::string, std::string, std::less<>>& valid_values, F callback)