#ifndef ARGPARSER_BASIC_TYPE_H #define ARGPARSER_BASIC_TYPE_H #include "defs.h" #include "parser_func.h" #include "type.h" #include #include #include #include namespace argparser { template class basic_type : public type_impl { public: basic_type(std::string name, internal::parser_func parser) : type_impl(std::move(name)), parser(std::move(parser)) {} T parse(const char *begin, const char *end, const char *&parse_end, internal::parser_allow_undelimited allow_undelimited) override { const char *n_parse_end; auto val = parser(begin, end, n_parse_end, allow_undelimited); parse_end = n_parse_end; return val; } private: internal::parser_func parser; }; }// namespace argparser #endif//ARGPARSER_BASIC_TYPE_H