#pragma once #include #include #include class Option { friend class OptionSet; public: Option(const std::string& str, std::function func); Option(const std::string& str, std::function func); private: void parse(const std::string& str); char m_short; std::string m_long; int m_has_arg; std::function m_void_func; std::function m_func; }; class OptionSet { public: OptionSet(std::initializer_list