Quellcode durchsuchen

Fix two bugs in arguments.

Sam Jaffe vor 4 Jahren
Ursprung
Commit
4053ba057c
2 geänderte Dateien mit 3 neuen und 2 gelöschten Zeilen
  1. 2 1
      include/program_args/arguments_impl.hpp
  2. 1 1
      include/program_args/utilities.h

+ 2 - 1
include/program_args/arguments_impl.hpp

@@ -105,7 +105,8 @@ template <typename Impl>
 Arguments<Impl>::Arguments(int argc, char const * const * const argv) {
   Impl generator;
   *this = static_cast<Arguments const &>(generator);
-  if (argument_names.rbegin()->first != argument_names.size() - 1) {
+  if (argument_names.size() &&
+      argument_names.rbegin()->first != argument_names.size() - 1) {
     throw IllegalPositionError("Higher positional than number recorded",
                                argument_names.rbegin()->first);
   }

+ 1 - 1
include/program_args/utilities.h

@@ -55,7 +55,7 @@ T convert(std::string const & name, std::string const & data) {
 template <typename T>
 T convert(std::string const & name, std::vector<std::string> const & data) {
   conversion_helper<T> helper;
-  if constexpr (!traits::is_repeatable_v<decltype(helper)>) {
+  if constexpr (traits::is_repeatable_v<decltype(helper)>) {
     return helper(data);
   } else if (data.size() == 1) {
     return helper(data.front());