草庐IT

my_options

全部标签

c++ - 使用 boost::program_options 接受负 double

我需要能够拥有boost::program_options解析一个double组在命令行上传递。对于正double,这没问题,当然(在add_options中使用带有std::vector的多token),但是对于否定的,我知道这些都是模棱两可的论点。以下是我想要学习的演示:mycommand--extent-1.0-2.0-3.01.02.03.0--some-other-argumentsomevalueextentistobebackedbyaBoundsclasswithatleastoneconstructorthattakesinsixindividualTargument

c++ - 如果包含的类型是可平凡复制的类型,则 std::optional 是否会是可平凡复制的类型

如果std::optional中的类型T是可平凡复制的类型,则std::optional将是可平凡复制的。我问,因为我想在原子中使用它,所以以下对于一些可简单复制的类型T有效std::atomic> 最佳答案 复制构造函数指定为:optional(constoptional&rhs);3Requires:is_copy_constructible_vistrue.4Effects:Ifrhscontainsavalue,initializesthecontainedvalueasifdirect-non-list-initializ

c++ - 使用 std::optional<int> 是否与使用 int 一样有效?

我有一个四/八叉树数据结构。我将一个单元格的子索引/ptrs存储在一个数组中。数组中的每个位置都代表一个child相对于其parent的位置,例如二维://_____________//|||//|2|3|//|_____|_____|//|||//|0|1|//|_____|_____|//foreachcell,4childrenarealwaysstoredinrow-majororderstd::vector>children;我知道最大子节点数是Integer的值的子集。类型可以代表。因此,我可以通过使用像-1这样的“魔法”值来识别单元格是否缺少child。对于Integer

c++ - 如何手动将选项插入 boost.Program_options?

我有一个使用Boost.Program_options来存储和管理其配置选项的应用程序。我们目前正在远离配置文件,转而使用数据库加载配置。我编写了一个API,它通过主机名和实例名从数据库中读取配置选项。(酷!)然而,据我所知,没有办法手动将这些选项插入到boostProgram_options中。有没有人用过这个,有什么想法吗?boost的文档似乎表明在该map中获取内容的唯一方法是通过store函数,该函数可以从命令行或配置文件中读取(不是我想要的)。基本上是在寻找一种将数据库读取值手动插入到map中的方法。 最佳答案 我的答案来

c++ - 为什么将数组的地址分配给指针 "my_pointer = &my_array"是编译错误?

intmy_array[5]={0};int*my_pointer=0;my_pointer=&my_array;//compilererrormy_pointer=my_array;//ok如果my_array是数组的地址,那么&my_array会给我什么?我收到以下编译器错误:error:cannotconvert'int(*)[5]'to'int*'inassignment 最佳答案 my_array是一个由5个整数组成的数组的名称。编译器会很乐意将其转换为指向单个整数的指针。&my_array是一个指向5个整数数组的指针。编

c++ - target_compile_options() 仅适用于 C++ 文件?

是否可以仅将target_compile_options()用于C++文件?我想将它用于作为其他应用程序依赖项的目标,以便库可以将其编译器标志传播到这些应用程序。但是,如果与C或ObjC文件一起使用,某些标志(例如-std=c++14)会导致构建失败。我读过我应该CXX_FLAGS而不是只将这些标志添加到C++文件中,但这不会(自动)通过cmake的包系统传播。 最佳答案 解决方案您可以使用generatorexpressions来执行此操作:target_compile_options(MyLibPUBLIC$:-std=c++1

c++ - boost::optional 到 bool 的转换

如何防止这段代码的最后一行被编译?#includeintmain(){typedefboost::optionalint_opt;int_optopt=0;boolx=opt;//最后一行不检查opt包含的int值,而是编译为类型转换为bool,这似乎不是用户想要的。安全的bool习语似乎与此相关? 最佳答案 boost::optional的全部意义在于启用这样的代码:voidfunc(boost::optionaloptionalArg){if(optionalArg){doSomething(*optionalArg);}}所以

c++ - std::optional::value_or() - 惰性参数评估

是否有可能以惰性方式评估std::optional::value_or(expr)参数,因此expr仅在没有的情况下计算值(value)?如果不是,什么是合适的替代品? 最佳答案 #includetemplatestructLazy{Ff;operatordecltype(f())()const{returnf();}};templateLazy(Ff)->Lazy;intmain(){std::optionalo;inti=o.value_or(Lazy{[]{return0;}});}DEMO

c++ - 为什么 optional<T&> 应该在分配时重新绑定(bind)?

关于optional的内容一直存在争议。和variant应该与引用类型有关,尤其是在分配方面。我想更好地理解围绕这个问题的辩论。optionalopt;opt=i;opt=j;//shouldthisrebindordoi=j?目前,决定是optional格式不正确,使variant::operator=如果任何类型是引用类型,则格式错误-回避参数并仍然为我们提供大部分功能。opt=j的论据是什么?应该重新绑定(bind)底层引用吗?换句话说,为什么应该我们实现optional像这样:templatestructoptional{T*ptr=nullptr;optional&opera

c++ - 如何使用 boost::program_options 接受可选标志?

我需要实现一个可选标志,例如-f/--flag。由于这是一个标志,因此没有关联的值。在我的代码中,我只需要知道是否设置了标志。使用boost::program_options的正确方法是什么? 最佳答案 一个方便的方法是使用bool_switch功能:boolflag=false;namespacepo=boost::program_options;po::options_descriptiondesc("options");desc.add_options()("flag,f",po::bool_switch(&flag),"de