草庐IT

boost-pool

全部标签

c++ - boost ASIO 并发度

我正在学习使用BoostASIO。这是从chatexample复制的一些代码与BoostASIO文档一起提供,typedefstd::dequechat_message_queue;classchat_client{public:chat_client(boost::asio::io_service&io_service,tcp::resolver::iteratorendpoint_iterator):io_service_(io_service),socket_(io_service){boost::asio::async_connect(socket_,endpoint_iter

c++ - boost::optional<std::string> 和来自 char[] 的隐式构造函数

我已经习惯了通过让编译器找出所涉及的魔法来以下列方式初始化std::stringsstd::stringmy_string="hello";以下将不起作用,因为两种类型之间没有显式转换:boost::optionalmy_optional_string="hello";但这确实有效:boost::optionalmy_optional_string=std::string("hello");现在,难道没有办法菊花链隐式调用的单参数构造函数以允许第二种形式吗?我问的原因(虽然我不想用细节打扰你)是有一大堆类需要填充可选成员。必须显式输入所有内容似乎是一种负担(我不太担心自己,但我正在开发

c++ - 是否有 auto_ptr 的替代品可以与 c++11 中的 boost ptr_map 一起使用

在c++11中,auto_ptr已弃用,取而代之的是更合理的unique_ptr。唉,如果你使用boost::ptr_map,auto_ptr就完成了一个非常方便的用途:std::auto_ptrpLayer(newLayer());mRawLayerPtrMap.insert(layerName,pLayer);是否有可能使用与c++11类似的东西。这个我知道Layer*pLayer=newLayer();mFusedLayers.insert(fusedLayerName,pLayer);有效,但auto_ptr在一些更复杂的场景中有它的优点。是否有适用于C++11的替代品?

c++ - boost::asio 中的未经请求的消息使应用程序崩溃,没有 SSL 它工作正常,为什么?

我想通过SSL连接发送未经请求的消息。这意味着服务器不是基于客户端的请求发送消息,而是因为发生了客户端需要知道的某些事件。我只是使用来自boost站点的SSL服务器示例,添加了一个在10秒后发送“hello”的计时器,在计时器到期之前一切正常(服务器回显的一切),也收到了“hello”,但是之后,应用程序在下次向服务器发送文本时崩溃。对我来说更奇怪的是,当我禁用SSL代码时,使用普通套接字并使用telnet执行相同的操作,它工作正常并且继续正常工作!!!我第二次遇到这个问题,我真的不知道为什么会这样。下面是我为演示问题而更改的全部源代码。在没有SSL定义和使用telnet的情况下编译它

c++ - Boost -gd 库文件

构建boost库(这样我就可以使用文件系统命名空间)后,我在stage/lib文件夹中找到了以下名称中包含文件系统的文件:libboost_filesystem-vc100-mt-1_51(838kb)libboost_filesystem-vc100-gd-mt-1_51(4210kb)注意第二个中的-gd。我还在括号中输入了尺寸。那么,有什么区别呢?我使用哪一个? 最佳答案 -gd用于库的调试版本。使用-gd-mt构建调试配置,使用-mt构建发布配置。 关于c++-Boost-gd库

c++ - 在容器中存储 boost::function 对象

我有一个KeyCallbackvector:typedefboost::functionKeyCallback我用它来存储按下键盘按钮时的所有监听器。我可以使用for_each添加它们并将事件分派(dispatch)给所有回调,但我不知道如何从我的vector中实际删除特定的KeyCallback签名。例如我想要这样的东西:voidInputManager::UnregisterCallback(KeyCallbackcallback){mKeyCallbacks.erase(std::find(mKeyCallbacks.begin(),mKeyCallbacks.end(),cal

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++ - Boost.Spirit.Qi - 规则开头的错误

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

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++ - 在语义 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