template <class T, class F>
typename std::enable_if<std::is_same<void, decltype(std::declval<F>()(std::declval<const T&>()))>::value, void>::type
bindFlag(T& value, const char* name, const char* description, std::map<T, std::string> valid_values, F callback)
template <class T, class F>
typename std::enable_if<std::is_same<void, decltype(std::declval<F>()(std::declval<const T&>()))>::value, void>::type
bindFlag(T& value, const char* name, const char* description, std::map<T, std::string> valid_values, F callback)