草庐IT

boost-lambda

全部标签

c++ - 捕获 lambda 异常

如何捕获作为异常抛出的lambda?我尝试了以下方法:#includeintmain(){try{throw[](){};}catch(std::function&fn){fn();}}但是输出是terminatecalledafterthrowinganinstanceof'main::{lambda()#1}'是否可以捕获抛出的lambda异常? 最佳答案 你可以显式地抛出一个std::function:intmain(){try{throwstd::function([](){std::cout&fn){fn();}}

c++ - 在带有 std::unique_ptr 的 lambda 中使用 std::bind

//Byconstl-valuereferenceautofunc2=std::bind([](conststd::unique_ptr>&pw)//fine{std::coutsize()>(22,1));//Bynon-constl-valuereferenceautofunc3=std::bind([](std::unique_ptr>&pw)//fine{std::coutsize()>(22,1));//ByValueautofunc4=std::bind([](std::unique_ptr>pw)//error{std::coutsize()>(22,1));func4(

c++ - lambda 表达式中引用捕获和非显式捕获的 constexpr 变量之间的区别

这个问题Accesstoconstexprvariableinsidelambdaexpressionwithoutcapturing回答了为什么下面示例中的ref-capture不是严格必要的。但另一方面,如果它被捕获,则会出现错误。错误似乎是由foo()的递归性质触发的。templateconstexprintbar(constT&x){//NOK//constexprintbar(Tx){//OKreturnx;}templateintfoo(constT&l){constexprautox=l()-1;autoy=[&]{returnbar(x);};//ifref-captu

c++ - 来自 Voronoi 的 Delaunay boost : missing triangle with non-integral point coordinates

遵循这两个资源:BoostbasictutorialSOQuestion我用boost写了一个Delaunay三角剖分。如果点坐标是完整的(我生成了几个随机测试并且我没有观察到错误),它工作正常。但是,如果这些点不是整数,我会发现许多不正确的三角剖分缺少边缘或错误的边缘。例如这张图片是用四舍五入的值构建的并且是正确的(见下面的代码)但是这个图像是用原始值构建的并且是不正确的(见下面的代码)这段代码重现了这两个例子(没有显示)。#includeusingboost::polygon::voronoi_builder;usingboost::polygon::voronoi_diagram

c++ - 如何在 boost::spirit::qi 中将某些语义 Action 排除在 AST 之外

我尝试使用boost::spirit::qi解析大量文件。解析不是问题,但有些文件包含我想跳过的噪音。构建一个简单的解析器(不使用boost::spirit::qi)验证我可以通过跳过行首不匹配规则的任何内容来避免噪音。因此,我正在寻找一种方法来编写基于行的解析器,在不匹配任何规则时跳过行。下面的示例允许语法在完全不匹配的情况下跳过行,但是“垃圾”规则仍然插入一个空的V()实例,这是不需要的行为。在示例中使用\r而不是\n是有意的,因为我在文件中同时遇到了\n、\r和\r\n。#include#include#include#include#include#include#includ

c++ - 使用带有 lambdas/bind 的成员函数实现中间件函数

我有一个功能,Post(),它有两个参数-astd::string监听请求的路径,以及std::function处理传入的请求。请注意,我无法修改Post().例如:m_server.Post("/wallet/open",[this](autoreq,autores){std::cout我正在尝试通过中间件函数传递请求,然后转发到处理函数。处理函数和中间件函数是成员函数。Post()绑定(bind)的设置发生在同一类的成员函数中。这个有效:m_server.Post("/wallet/open",[this](autoreq,autores){autof=std::bind(&Api

c++ - 在 Qt 信号和槽中使用 lambda 语法并访问传递的参数

我有一个具有此签名的信号的类://CLASSAsignals:voidrequestToChangeRange(voltage_range_evr,current_range_ecr,uint16_tbits);还有另一个类有这样一个插槽(注意额外的参数)//CLASSCpublicslots:voidhandleRequestRangeChange(voltage_range_evr,current_range_ecr,uint16_tbits,uint16_tlimiter);然后我有一个类“B”,它充当所有其他类的交汇点。当“A”类发出信号时,“C”类应将其重定向到“B”类。但是

c++ - 有没有办法结合 Qt-Creator + Boost 库?

我想知道是否有办法在Qt-creator(Qt的IDE版本)中使用boost库。谢谢,A. 最佳答案 我很确定QtCreator不需要在您的应用程序中使用Qt。如果您不想链接到任何Qt库,或在任何头文件上运行MOC(您只需要对QObject的子类执行此操作),那么只需执行QT-=coregui(从链接命令中删除Qt库。也许QT=也可以),并且不要指定任何HEADERS.祝你好运,如果有效请回传。 关于c++-有没有办法结合Qt-Creator+Boost库?,我们在StackOverfl

c++ - 将 tm 结构转换为 boost::local_time::local_date_time

如何从tm时间结构创建一个boost::local_time::local_date_time对象? 最佳答案 有点痛苦,但看起来你必须通过posix_time::ptime:usingnamespaceboost;time_trawtime;time(&rawtime);structtm*timeinfo=localtime(&rawtime);posix_time::ptimemy_ptime=posix_time::ptime_from_tm(*timeinfo);local_time::time_zone_ptrzone(n

c++ - 在使用中删除 boost 功能

我遇到这样一种情况,boost::function和boost::bind(实际上是std::tr1::function和bind)在使用中被删除了。这样安全吗?我通常会避免它,但有问题的代码有点根深蒂固,我唯一的其他选择是添加一个新线程。typedeffunctionfoo_type;foo_type*global_foo=NULL;intactual_foo(inti,Magic*m){deleteglobal_foo;returnm->magic(i);}intmain(){Magicm;global_foo=newfoo_type(bind(&actual_foo,_1,&m)