#pragma once #include #include namespace da { namespace po = boost::program_options; class EntryProgram { using ProcessingFunction = std::function; public: explicit EntryProgram(const std::string &caption) : description_(caption) {} virtual auto AddCmdOption() -> po::options_description_easy_init; void Run(int argc, char **argv, const ProcessingFunction &Processing); protected: po::options_description description_; }; } // namespace da