#pragma once #include namespace program { class ProgramArgumentsError : public std::logic_error { using std::logic_error::logic_error; }; class ArgumentStructureError : public ProgramArgumentsError { public: ArgumentStructureError(std::string const & desc, std::string const & name) : ProgramArgumentsError(desc + " for argument " + name) {} }; class IllegalPositionError : public ProgramArgumentsError { public: IllegalPositionError(std::string const & desc, size_t index) : ProgramArgumentsError(desc + " at index " + std::to_string(index)) {} }; }