浏览代码

Fix two bugs in arguments.

Sam Jaffe 4 年之前
父节点
当前提交
4053ba057c
共有 2 个文件被更改,包括 3 次插入2 次删除
  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) {
 Arguments<Impl>::Arguments(int argc, char const * const * const argv) {
   Impl generator;
   Impl generator;
   *this = static_cast<Arguments const &>(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",
     throw IllegalPositionError("Higher positional than number recorded",
                                argument_names.rbegin()->first);
                                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>
 template <typename T>
 T convert(std::string const & name, std::vector<std::string> const & data) {
 T convert(std::string const & name, std::vector<std::string> const & data) {
   conversion_helper<T> helper;
   conversion_helper<T> helper;
-  if constexpr (!traits::is_repeatable_v<decltype(helper)>) {
+  if constexpr (traits::is_repeatable_v<decltype(helper)>) {
     return helper(data);
     return helper(data);
   } else if (data.size() == 1) {
   } else if (data.size() == 1) {
     return helper(data.front());
     return helper(data.front());