草庐IT

boost-lambda

全部标签

Python + setuptools : distributing a pre-compiled shared library with boost. python 绑定(bind)

我有一个C++库(我们在下文中将其称为示例),我使用boost.python库为其编写了Python绑定(bind)。这个Python包装的库将称为pyExample。整个项目是使用CMake构建的,生成的Python包装库是一个名为libpyExample.so的文件。当我使用与libpyExample.so位于同一目录中的Python脚本中的Python绑定(bind)时,我只需编写:importlibpyExamplelibpyExample.hello_world()这会执行包装过程公开的hello_world()函数。我想做什么为了方便起见,我希望我的pyExample库可以

c++ - Boost.Asio - 轮询命名管道

我正在尝试监听命名管道上的输入。我正在使用Boost.Asio的stream_descriptor和async_read在Linux下。问题是,对io_service::run()的调用只会像我希望的那样阻塞,直到第一次读取。在那之后,它只是继续立即调用处理程序并出现“文件结束”错误,即使我尝试向它附加更多async_reads。我的代码等同于以下内容:boost::asio::io_serviceio_service;intfifo_d=open("/tmp/fifo",O_RDONLY);boost::asio::posix::stream_descriptorfifo(io_se

c++ - 为什么 boost::circular_buffer 在我的基准测试中这么慢?

阅读rationale,boost::circular_buffer看起来很有希望:Suitabilityforreal-timeandperformancecriticalapplications.Fastconstant-timeinsertionandremovalofelementsfromthefrontandback.当我运行一个模拟我的用例的简单基准测试时,将其用作字节缓冲区:写一个更大的block读取较小的block直到为空重复性能绝对糟糕,超过4000x比我自己的hack和spsc_queue慢。lin:101//10240xlock:109//10240xcirc:

c++ - 尝试在 cygwin : error: expected unqualified-id before '&&' token 中构建 boost 文件系统时出错

我安装了cygwin2.6和gcc5.4。我安装了boost.build,它似乎可以正常工作。但是,当我尝试构建文件系统模块时,它失败并出现错误:work@PC/lib/boost_1_62_0/libs/filesystem/example/test$./build.shCompilingexampleprograms...tut4.cpp:40:18:error:expectedunqualified-idbefore'&&'tokentut4.cpp:40:18:error:expected';'before'&&'tokentut4.cpp:40:23:error:expect

c++ - 可变/不可变 lambda 的编译时开关

我正在编写一个类成员函数,它将在函数参数中采用给定类型T的lambda。我的问题是:是否可以根据参数的可变性在编译时重载成员函数?下面是示例://Tisagiventypeforclass.templateclassWrapper{T_t;//ForT&template>std::enable_if_t::value>operator()(F&&f){f(_t);}//ForconstT&template>std::enable_if_t::value>operator()(F&&f)const{f(_t);}};所以,我想要的是,如果给定的lambda具有以下签名,则应调用第一个运算

c++ - 关闭时 Boost 日志中的 Boost 线程访问冲突

我有一个使用boost日志记录的应用程序。在关闭期间,它会在空指针访问时发生访问冲突。当我单步执行代码到失败点时,似乎正在取消分配boost::logdll,然后boost::thread代码尝试访问曾经被日志dll占用的内存。我没有在自己的代码中使用任何boost线程,因此假设boost-threaddll被boostlog使用。为了确保在关闭之前销毁所有接收器,我调用了:core->flush()和core->remove_all_sinks()我使用的是boost1.60,也曾在boost1.63上尝试过。相同的结果。有没有办法确保在退出/卸载dll之前完全关闭boost日志记录

c++ - 模板化 lambda 中的所有 lambda 是否也是模板化 lambda?

考虑这段代码(在GCC和MSVC上编译):intmain(){autofoo=[](autop){typedefdecltype(p)p_t;autobar=[](){returnstatic_cast(10);};returnbar();};std::coutfoo()是一个模板化的lambda,因为它有一个auto参数。但是要让bar()知道p_t类型,它也必须以某种方式隐式模板化,这让我想到了标题中的问题:模板lambda中的所有lambda是否也是模板lambda?如果是这样的话,那么如果我有很多嵌套的lambda,模板参数的数量似乎会增长得很快(不一定是坏事,但它让我感到惊讶

c++ - 同步 boost ASIO : Asynchronous write,

我有一个程序(客户端+服务器)可以正常工作:boost::asio::write(this->socket_,boost::asio::buffer(message.substr(count,length_to_send)));哪里socket_是boost::asio::ssl::stream和message是一个std::string.我想让它变得更好和非阻塞,所以我创建了一个可以替代它的函数,它的调用如下:write_async_sync(socket_,message.substr(count,length_to_send));这个函数的目的是:本质上使调用异步保持界面不变我实

c++ - 使用 boost 预处理实例化模板函数和类

使用看似标准的w,x,y,z演示,假设我有以下宏试图转换为“可迭代”预处理器宏#defineINSTANTIATE_FUNC(rtype,func_name,...)\templatertypefunc_name(__VA_ARGS__);\templatertypefunc_name(__VA_ARGS__);\templatertypefunc_name(__VA_ARGS__);\templatertypefunc_name(__VA_ARGS__);为了完整起见,假设我们正在尝试实例化以下内容structw{staticconstexprintdata=0;};structx{

c++ - 将 lambda 函数转换为另一个编译单元中的普通函数是否会缩短编译时间?

我正在从事一个C++服务器项目,该项目一直受到不断增长的main()函数的困扰,并且代码库已经增长到编译时间约为6分钟的地步(在Debug模式下))即使我对main()函数做了最细微的更改。(main()函数大约有5000行长!)我使用的是VisualStudio2017,并且(据我了解)编译器具有一些预编译header功能,以及不重新编译未修改函数的功能。但是这些东西目前用处不大,因为大部分逻辑都在main()函数中。这是我的代码的(非常简化的)版本:structGrandServer{std::map>request;/*someotherfunctionsofthisserver