Fix passing a const array to parse (#258)

Fixes #257. The input array is not modified, so we can declare this as
`char const* const*`.
This commit is contained in:
jarro2783 2020-10-03 20:54:06 +10:00 committed by GitHub
parent 4b63c333a8
commit 3ef9fddc7b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 6 deletions

View File

@ -1325,7 +1325,7 @@ namespace cxxopts
}
ParseResult
parse(int argc, const char** argv);
parse(int argc, const char* const* argv);
bool
consume_positional(const std::string& a, PositionalListIterator& next);
@ -1334,7 +1334,7 @@ namespace cxxopts
checked_parse_arg
(
int argc,
const char* argv[],
const char* const* argv,
int& current,
const std::shared_ptr<OptionDetails>& value,
const std::string& name
@ -1412,7 +1412,7 @@ namespace cxxopts
}
ParseResult
parse(int argc, const char** argv);
parse(int argc, const char* const* argv);
OptionAdder
add_options(std::string group = "");
@ -1772,7 +1772,7 @@ void
OptionParser::checked_parse_arg
(
int argc,
const char* argv[],
const char* const* argv,
int& current,
const std::shared_ptr<OptionDetails>& value,
const std::string& name
@ -1865,7 +1865,7 @@ Options::parse_positional(std::initializer_list<std::string> options)
inline
ParseResult
Options::parse(int argc, const char** argv)
Options::parse(int argc, const char* const* argv)
{
OptionParser parser(*m_options, m_positional, m_allow_unrecognised);
@ -1873,7 +1873,7 @@ Options::parse(int argc, const char** argv)
}
inline ParseResult
OptionParser::parse(int argc, const char** argv)
OptionParser::parse(int argc, const char* const* argv)
{
int current = 1;
bool consume_remaining = false;

View File

@ -773,3 +773,9 @@ TEST_CASE("Option add with add_option(string, Option)", "[options]") {
CHECK(result["aggregate"].as<int>() == 4);
CHECK(result["test"].as<int>() == 5);
}
TEST_CASE("Const array", "[const]") {
const char* const option_list[] = {"empty", "options"};
cxxopts::Options options("Empty options", " - test constness");
auto result = options.parse(2, option_list);
}