向量值boost :: program_options的默认值
Default value for vector valued boost::program_options
我有一个boost :: program_options选项,该选项成功地将所需的输入选项解析到向量中,但是我看不到如何给它给它一个默认值。示例:
base.add_options()
("vector_value",po::value<std::vector<double> >(&vecoption)->multitoken(),"description");
可以很好地将值读为vecoptions,
之类的东西 base.add_options()
("int_value",po::value<int>(&intoption)->default_value(1),"description");
也可以正常工作,但是试图为vector参数提供一个默认值,例如
base.add_options()
("vector_value",po::value<std::vector<double> >(&vecoption)->default_value(std::vector<double>{0,1,2}),"description");
给出编译器错误
错误:静态断言失败:源类型既不是std :: ostream`.也不是std :: wostream`.
如何创建一个带有默认值(例如{0,1,2}?
问题由ostream
丢失的CC_2引起的问题。该操作员需要提供默认值的文本表示。在boostprogram_optionsvalue_semantic.hpp
标题中,您可以找到有关此要求的评论:
/**指定默认值,如果没有明确指定,则将使用该值。类型'T'应提供操作员&lt;&lt;对于Ostream。 */
typed_value* default_value(const T& v)
要解决问题,您可以指定operator<<
,例如:
namespace std
{
std::ostream& operator<<(std::ostream &os, const std::vector<double> &vec)
{
for (auto item : vec)
{
os << item << " ";
}
return os;
}
}
BOOST在命名空间std
中定义的operator<<
可以解析CC_7。在这种情况下,默认参数值可以指定为:
("vector_value", po::value<std::vector<double> >(&vecoption)->multitoken()->default_value(std::vector<double>{0, 1, 2}), "description");
另一种方法是将方法与明确的文本值规范使用:
("vector_value", po::value<std::vector<double> >(&vecoption)->multitoken()->default_value(std::vector<double>{0, 1, 2}, "0, 1, 2"), "description");
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 具有默认值的引用获取函数
- 当给定默认值时,为什么此模板参数推导失败
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 格式化浮点值:返回默认值
- 如何将数组部分初始化为某个默认值?
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- 创建一个包含 c++ 默认值的环境文件
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- Switch 语句(字符串)一直选择默认值,除非其为零
- 如何使用默认值将枚举声明为 extern
- 如何在提升程序选项中设置矢量<矢量>的默认值<string>
- 如何使用默认值为构造函数中的枚举赋值?
- 变量始终在函数中重置为默认值
- 如何在C++中提供模板化函数作为另一个函数的参数,默认值?
- 函数不返回默认值
- 具有公共范围与专用范围的默认值的C++的不同行为
- 在 c++ 中,如果我创建一个接受一个具有默认值的参数的构造函数 - 它会用作默认(空)构造函数吗?
- 实例化时结构字段中的默认值