diff --git a/CHANGELOG.md b/CHANGELOG.md index 11af807..4cafff1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ options. The project adheres to semantic versioning. when a positional argument could follow an option with an implicit value. For example, `--foo value`, where `foo` has an implicit value, will be parsed as `--foo=implicit` and a positional argument `value`. +* Fixed an ambiguous overload in the `parse_positional` function when an + `initializer_list` was directly passed. ## 2.0 diff --git a/include/cxxopts.hpp b/include/cxxopts.hpp index bb486c5..4bf91b4 100644 --- a/include/cxxopts.hpp +++ b/include/cxxopts.hpp @@ -1211,6 +1211,9 @@ namespace cxxopts void parse_positional(std::vector options); + void + parse_positional(std::initializer_list options); + std::string help(const std::vector& groups = {""}) const; @@ -1588,7 +1591,7 @@ inline void Options::parse_positional(std::string option) { - parse_positional(std::vector{option}); + parse_positional(std::vector{std::move(option)}); } inline @@ -1602,6 +1605,13 @@ Options::parse_positional(std::vector options) } inline +void +Options::parse_positional(std::initializer_list options) +{ + parse_positional(std::vector(std::move(options))); +} + +inline ParseResult Options::parse(int& argc, char**& argv) { diff --git a/test/options.cpp b/test/options.cpp index 3879660..503ed39 100644 --- a/test/options.cpp +++ b/test/options.cpp @@ -145,7 +145,7 @@ TEST_CASE("All positional", "[positional]") auto argc = av.argc(); auto argv = av.argv(); - options.parse_positional("positional"); + options.parse_positional({"positional"}); auto result = options.parse(argc, argv);