c++ - Boost 程序选项设置选项的最小值和最大值

标签 c++ boost max minimum boost-program-options

是否可以设置一个值的最小和最大限制(假设它是 unsigned short 并且我需要一个介于 0 和 10 之间的值),因为我可以设置默认值

opt::value<unsigned short>()->default_value(5)

我想立即使用程序选项的变量映射给出的参数,而不检查每个参数。

最佳答案

我推荐一个 lambda(比如 kaveish's answer )。但您可以让它返回一个检查适当边界的函数,以使所有内容更具可读性。

auto in = [](int min, int max, char const * const opt_name){
  return [opt_name, min, max](unsigned short v){ 
    if(v < min || v > max){ 
      throw opt::validation_error
        (opt::validation_error::invalid_option_value,
         opt_name, std::to_string(v));
    }
  };
};

opt::value<unsigned short>()->default_value(5)
  ->notifier(in(0, 10, "my_opt"));

关于c++ - Boost 程序选项设置选项的最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25548090/

相关文章:

c++ - 变体与继承

facebook - Facebook页面的最大iframe宽度是多少? (2011 年 7 月)

arrays - 在 Swift 中访问数组中枚举的原始值

c++ - 未检查/强制执行 Protobuf C++ 必填字段

c++ - eclipse ncurses 和 xterm,打印未知字符

c++ - 从 std::true_type 继承 vs static constexpr const bool 成员

c++11 - C++ range-for 和 boost::irange

c++ - 如何在 C++ 中使用 waitformultipleobjects

c# - Filestream 寻找正确的位置而 fstream 没有

mysql - 五个表均来自第一个表,如果存在,则将其他表与第五个表中的最大值连接起来