草庐IT

any_option

全部标签

c++ - 脱离的 std::optional<T> 对象的散列是什么?

Thispage来自cppreference提到std::hash已专门用于std::optional,但没有指定对象脱离时的行为。我可以想到不同的行为:它可以抛出std::bad_optional_access,与std::optional::value一致它可以为每个脱离的std::optional返回相同的哈希值,这样2个分离的对象将具有相同的哈希值。它可以返回std::optional>> 最佳答案 C++14CD在[optional.hash]/3中说:Foranobjectooftypeoptional,ifbool(o

c++ - Visual Studio : Command line error D8016: '/Ox' and '/RTC' command-line options are incompatible

我正在使用VisualStudio2012编写C++项目。我在构建项目时尝试使用O2或Ox优化。但它提示了一个错误"cl:命令行错误D8016:'/Ox'和'/RTC'命令行选项不兼容。"我试图从互联网上找到解决方案,但它对我不起作用。希望有人能帮助我。最佳 最佳答案 首先,您的错误代码是错误的。您在发布时可能犯了错误,因为它应该是D8016,而不是D0816。希望您没有犯其他可能误导我们的错误...除此之外,错误信息很清楚:VisualStudio:CommandlineerrorD0816:'/Ox'and'/RTC'comma

c++ - 获取指向 boost::any 内容的 void* 指针

我正在使用一个外部库,它有一个接受void*的方法我希望这个void*指向包含在boost::any对象中的对象。是否可以获取到boost::any对象的内容地址?我正在尝试使用myAny.content但到目前为止运气不好!我希望dynamic_cast或unsafe_any_cast的某种组合能满足我的需求。谢谢! 最佳答案 您可以使用boost::any_cast获取指向底层类型的指针(前提是您在编译时知道它)。boost::anyany_i(5);int*pi=boost::any_cast(&any_i);*pi=6;vo

c++ - 英特尔 AVX 内在函数 : any compatibility library out?

是否有任何英特尔AVX内部函数库?我正在寻找类似于“sse2mmx.h”header的东西,如果SSE2整数内在函数在编译时不可用,它会回退到MMX内在函数。因此,如果我有类似的AVX库,我可以为新硬件编写优化代码,在AVX扩展不可用的情况下,它几乎可以达到最佳速度。谷歌搜索到目前为止没有多大帮助:( 最佳答案 英特尔提供了一个AVXemulationheader.我没有尝试过,但引用了链接的文章“AVX仿真头文件使用内部函数来扩展IntelSSE4.2之前的Intel指令集。您的开发环境和硬件需要SSE4.2支持,以便使用AVX仿

c++ - boost::program_options 位置选项

我有一个位置选项(一个文件名),我希望它成为最后一个选项。用户可以在命令行中传入一堆东西,也可以使用-F作为文件名。但是,我希望用户也能够将文件名放在末尾。例如:./program--var3/path/to/file我目前实现的代码允许调用者将文件名放在命令行的任意位置。有什么方法可以强制位置参数始终位于“常规”参数之后?这是我设置位置参数的方法:pos_opts_desc.add("filename",-1);并解析命令行:store(command_line_parser(argc,argv).options(opts_desc).positional(pos_opts_desc

c++ - boost::program_options 可以使用 "-"以外的定界符吗?

我像这样使用boost::program_options:namespacepo=boost::program_options;po::options_descriptiondesc("Options");desc.add_options()("help,?","ShowOptions")("capture-file,I",po::value(),"CaptureFile")("capture-format,F",po::value()->default_value("pcap"),"CaptureFileFormat")("output-file,O",po::value()->de

c++ - std::any_of 与顺序执行策略一起使用时是否保证迭代顺序?

我有一个过滤函数列表。如果这些函数中的任何一个返回“true”,我就不应该进一步处理事件。std::any_of似乎适合这个用例,但我希望保证过滤器函数按照它们添加到我的列表中的顺序被调用(因为它们可能有副作用)。因此,如果我使用std::any_of,我需要知道它调用过滤器函数的顺序是确定的,从列表的begin()到end()。我检查了std::any_of上的C++标准和顺序执行策略,但没有提到顺序保证。我没有在cppreference上找到关于订单保证的提及,也没有在stackoverflow上找到足够相似的已回答问题。我的结论是没有订单保证。虽然大多数编译器可能会按我的顺序处理

c++ - std::optional 中不可复制的容器

我正在尝试将不可复制类型的(STL-)容器打包到std::optional,e。例如:classMyClass{MyClass(constMyClass&)=delete;};std::optional>optContainer;但是编译器(GCC7.2)提示error:useofdeletedfunction'MyClass::MyClass(constMyClass&)'{::new((void*)__p)_Up(std::forward(__args)...);}[...]note:declaredhereMyClass(constMyClass&)=delete;并在type_

c++ - 当我可以返回一个指针时,为什么要使用 boost::optional

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion如果我有一个find函数,有时可能无法找到所需的东西,我倾向于让该函数返回一个指针,这样一个nullptr指示该东西没有找到。例如Student*SomeClass::findStudent(/**somecriteria.*/)如果Student存在,返回一个指向找到的Student对象的指针,否则返回nullptr。我也看到boost::optional也为此目的而提倡。例如。When

c++ - boost program_options 是如何工作的?

对我来说奇怪的是,boost的options_description使用多行代码,没有反斜杠、分号或逗号。我做了一些研究,但一无所获。(代码取自officialboost'stutorial):intopt;po::options_descriptiondesc("Allowedoptions");desc.add_options()("help","producehelpmessage")("optimization",po::value(&opt)->default_value(10),"optimizationlevel")("include-path,I",po::value>