Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions include/argparse.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ namespace argparse
std::exit(EXIT_SUCCESS);
}

return get_parameters(m_arguments | std::views::transform([](auto const & up) -> Argument & { return *up; }));
return get_parameters(m_arguments | std::views::transform(cast_to_argument));
}
catch (VersionRequested const &)
{
Expand All @@ -238,7 +238,7 @@ namespace argparse
std::exit(EXIT_SUCCESS);
}

return get_parameters(m_arguments | std::views::transform([](auto const & up) -> Argument & { return *up; }));
return get_parameters(m_arguments | std::views::transform(cast_to_argument));
}
catch (parsing_error const & e)
{
Expand Down Expand Up @@ -306,13 +306,13 @@ namespace argparse
auto format_usage() const -> std::string
{
auto const formatter = Formatter();
return formatter.format_usage(m_arguments | std::views::transform([](auto const & ca) -> Formattable const & { return *ca; }), m_usage, m_prog);
return formatter.format_usage(m_arguments | std::views::transform(cast_to_formattable), m_usage, m_prog);
}

auto format_help() const -> std::string
{
auto const formatter = Formatter();
return formatter.format_help(m_arguments | std::views::transform([](auto const & ca) -> Formattable const & { return *ca; }), m_prog, m_usage, m_description, m_epilog);
return formatter.format_help(m_arguments | std::views::transform(cast_to_formattable), m_prog, m_usage, m_description, m_epilog);
}

auto format_version() const -> std::string
Expand All @@ -339,7 +339,7 @@ namespace argparse

auto parse_args(Tokens tokens) -> Parameters
{
auto arguments = m_arguments | std::views::transform([](auto const & up) -> Argument & { return *up; });
auto arguments = m_arguments | std::views::transform(cast_to_argument);
parse_optional_arguments(arguments, tokens);
parse_positional_arguments(arguments, tokens);

Expand Down Expand Up @@ -1773,6 +1773,16 @@ namespace argparse
Options m_options;
};

static auto cast_to_argument(ArgumentUptr const & up) -> Argument &
{
return *up;
}

static auto cast_to_formattable(ArgumentUptr const & up) -> Formattable const &
{
return *up;
}

ArgumentUptrs m_arguments;
OptString m_prog;
OptString m_usage;
Expand Down
Loading