草庐IT

boost-functional

全部标签

c++ - boost::msm - 一种获取状态的字符串表示形式(即 getName)的方法?

我正在尝试使用boost::msm库在我的代码中创建一个状态机。有谁知道获取状态的字符串名称(不是intid)的方法?我正在尝试将其用于日志记录/调试目的。例如在no_transition函数中,我得到了状态ID,但我试图得到一个名称以便于阅读:templatevoidno_transition(Eventconst&e,Fsm&fsm,intstateId){//ThisiswhatI'mtrying:autostate=fsm.get_state_by_id(stateId);//Thisreturnsaboost::msm::front::default_base_state.A

c++ - 命名空间 ‘function’ 中的 ‘std’ 没有命名类型

主.cc:#include#include#include"segtree.h"//NOLINTintmain(){constintn=8;SegmentTreesegmentTree(n,1,std::multiplies());for(inti=0;i分割树.h:#ifndefSEGTREE_H_//NOLINT#defineSEGTREE_H_#include#include#includetemplateclassSegmentTree{private:std::vectortree;intlevels;intn;intel;std::functionf;Tquery(intl

c++ - Boost.Spirit.Qi - 规则开头的错误

如何检测规则开头的错误?例如,考虑MiniXMLexample包含在文档中。如果我向解析器提供如下内容:thisisanerror然后我得到:Error!Expectinghere:""Error!Expectinghere:""Parsingfailed.那很好,但接下来考虑喂它:element>thisisanerror我得到的是非常通用但不太有用的:Parsingfailed.我如何修改规则以提供信息的方式报告错误? 最佳答案 您希望需要文档根级别的元素。其他消息是由失败的期望点生成的。您会希望在开始时有一个额外的期望值。我会

c++ - 'bind' 和 'function' 的问题

前一段时间,我遇到了如何将bind返回的可调用对象(称为A)传递给另一个函数(称为B)的问题,该函数需要一个参数,该参数是指向来自A的函数的指针。我发现bind返回的可调用A具有非常复杂的类型,因此放弃了我的方法。然后我在功能header中了解了“功能”,这听起来好像可以解决我的问题。然而,尝试了几次之后,我又一次受挫了!也许你能帮忙?下面是一些不起作用的代码:#include#include//Libraryfor"bind"and"function"#includeusingnamespacestd;usingnamespacestd::placeholders;//for_1,_

c++ - 我如何扩展 boost spirit 语法

事情是我做了一个对任务有用的语法,但是现在任务已更改,我需要定义新规则。但我不想修改已有的语法喜欢创建一个新的语法,它使用我现有的没有代码的语法重复,所以我只需要定义我需要的新规则。我尝试了一些东西像这样,但不起作用:structNew_grammar:Old_grammar{New_grammar():New_grammar::base_type(Command_list){Command_list%=qi::eps>>+Commands;Comandos%=oneoldCommand|NewCommand;NewCommand=("NewCommand">>stmt)[qi::_v

c++ - 错误 LNK2019 : unresolved external symbol referenced in function main

我正在尝试用C++运行我的简单汇编代码。我只有两个文件“.cpp”文件和“.asm”文件。编译时出现错误(见下文)。如果有人能提供帮助,我将不胜感激...:)这是我的“main.cpp”文件#includeusingnamespacestd;extern"C"intGetValueFromASM();intmain(intargc,char*argv[]){cout我还有一个简单的“asm.asm”文件.codeGetValueFromASMprocmovrax,3254retGetValueFromASMendpend尝试构建时出现此错误:1>main.obj:errorLNK201

c++ - 为什么不允许使用 "second C linkage of overloaded function"?

我将我的C++dll转换为Cdll:#ifdef__cplusplusextern"C"{#endifMY_EXPORTintmy_func();MY_EXPORTvoidmy_func(intn);#ifdef__cplusplus}#endif没有externC声明一切正常。有了这个声明,我得到了errorC2733:secondClinkageofoverloadedfunction'my_func'notallowed为什么不允许从C风格的dll导出重载函数? 最佳答案 C不允许重载函数。那就是C不支持重载。这是C++的一个

c++ - 在语义 Action 中 boost spirit 改变变量值

我想在语义操作中更改局部变量值,如下所示:#defineBOOST_SPIRIT_USE_PHOENIX_V3#include#include#includenamespaceqi=boost::spirit::qi;namespacespirit=boost::spirit;namespaceascii=boost::spirit::ascii;usingboost::phoenix::ref;usingboost::phoenix::bind;voiddummy(conststd::vector&v,int&var){var=7;}templatestructx_grammar:p

c++ - C++ 中的 __builtin__functions 有什么用?

我正在调试一个对性能敏感的事务处理系统。我找到了一个使用__builtin_memcpy和__builtin_memset而不是memcpy和memset的代码。__builtin_functions有什么用?,以防止对体系结构或编译器的依赖性问题?或者..__builtin_functions更受欢迎是否有任何性能原因?谢谢你:D 最佳答案 传统的库函数,标准的memcpy只是对一个函数的调用。不幸的是,memcpy通常会为每个小拷贝调用,调用函数、打乱几个字节并返回的开销是相当大的开销(特别是因为memcpy添加了在函数的开头添

c++ - 默认初始化 boost::optional

有没有办法在不提供T的名字的情况下默认初始化一个boost::optional变量?structMyStruct{inta;};intmain(){boost::optionalopt;opt=MyStruct();//我的目标是在我只想默认初始化时省略提供结构名称​​opt。 最佳答案 如果您的编译器支持可变参数模板并且您使用的是Boost1.56或更高版本,请使用emplace()没有参数:opt.emplace();如果不满足任何一个条件(没有可变参数模板的编译器或较旧的Boost)使用不带参数的in_place工厂:opt=