是否可以设置一个值的最小和最大限制(假设它是 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/