草庐IT

BOOST_STRINGIZE

全部标签

c++ - 我怎样才能得到一个返回自身的 boost::function (或其他通用函数包装器)?

我最近迷上了Erlang的基于角色的并发模型的简单性,并且正在研究用C++实现它的某些部分的想法。沿着这些思路,我也喜欢将有限状态机实现为一组表示状态的函数的想法,其中通过从一个函数到下一个函数的尾调用进行转换。我想在C++中尝试类似的东西。但是一个天真的实现很可能会遇到这样一个事实,即在我的编译器(带有-O0的GCC4.1)中进行尾调用最终会导致堆栈溢出。所以相反,我想做的是让每个状态/函数返回一个仿函数(下一个要进入的状态),并有一个底层循环,它只是顺序调用一个仿函数,然后调用返回的仿函数,然后调用仿函数因此返回,等等。类似的东西:typedef...context_t;//Ast

c++ - 从 2D C 列表创建 boost.geometry.model.polygon

假设我有以下数据集double*data=(double*)malloc(sizeof(double)*100*2);for(ii=0;ii我如何根据这些数据创建boost多边形?谢谢 最佳答案 一个完整的例子#include#include#include//Sometypedefsnamespacebpl=boost::polygon;typedefbpl::polygon_dataPolygon;typedefbpl::polygon_traits::point_typePoint;intmain(){//YourC-styl

c++ - boost::signals 插槽是同步调用还是异步调用?

谁能告诉我boost::signals插槽是同步调用还是异步调用?例如我有这段代码:structHello{voidoperator()()const{std::coutsig;sig.connect(Hello());sig.connect(World());sig();cout执行线程是如何工作的?执行是等待Hello()和World()执行,然后才打印"Foo"还是异步调用它们(打印“Foo”并调用Hello()和World()以未定义的顺序执行)? 最佳答案 在Boost.Signals插槽被同步调用,并且连接到同一信号的插

c++ - boost asio - 来自一个线程的 SSL async_read 和 async_write

我知道OpenSSL,boostasioSSL实现基于,不允许并发SSL_read()和SSL_write()(即由不同线程执行的SSL_read()和SSL_write())。从同一线程在SSL套接字上调用boostasioasync_read()和async_write()是否安全?谢谢 最佳答案 boost::asio::ssl:::stream的要求是为了线程安全;它不要求哪个线程可以启动操作:Distinctobjects:Safe.Sharedobjects:Unsafe.Theapplicationmustalsoen

c++ - boost :asio. 从服务器下载镜像文件

我正在尝试从HTTP服务器的响应中保存图像文件(gif),但该文件未正确保存。我正在使用boost网页中的同步代码示例,我得到了一个文件,但它与您在网络浏览器中看到的文件不同。在此处查看原始文件(WMS服务器):http://demo.lizardtech.com/lizardtech/iserv/ows?SERVICE=WMS&REQUEST=GetMap&LAYERS=LACounty,&STYLES=&BBOX=314980.5,3624089.5,443200.5,3861209.5&SRS=EPSG:26911&FORMAT=image/gif&HEIGHT=300&WIDT

c++ - boost::variant 和函数重载决议

以下代码无法编译:#includeclassA{};classB{};classC{};classD{};usingv1=boost::variant;usingv2=boost::variant;intf(v1const&){return0;}intf(v2const&){return1;}intmain(){returnf(A{});}gcc和clang都提示:test1.cpp:Infunction‘intmain()’:test1.cpp:18:17:error:callofoverloaded‘f(A)’isambiguousreturnf(A{});^test1.cpp:1

c++ - 在 Boost.Asio Stackful Coroutine 中产生

当使用Boost.Asio堆栈协程时,我如何“手动”让出以便另一个协程或异步操作有机会运行?例如,在发送对从TCP套接字接收到的命令的响应之前,我需要执行长时间的计算:asio::spawn(strand_,[this,self](asio::yield_contextyield){chardata[256];while(socket_.is_open()){size_tn=socket_.async_read_some(boost::asio::buffer(data),yield);if(startsWith(data,"computePi")){while(!computatio

c++ - 使用 libpcl_surface 在 boost::math::lanczos 中调试段错误

仅当我在使用调试标志编译的代码上使用gdb进行调试时,才会出现以下错误ProgramreceivedsignalSIGSEGV,Segmentationfault.0x00007fffc79a7ff0inboost::math::lanczos::lanczos_initializer::init::init()()from/usr/lib/libpcl_surface.so.1.7操作系统:unbutu14.04我有最新的pcl库(1.7Sprikelhof)和boost库(1.54)请注意,在gdb外部运行时不会出现段错误。 最佳答案

c++ - Boost.Asio SSL 线程安全

我是创建一个所有SSL套接字共享的链,还是每个SSL上下文创建一个链(由任何关联的套接字共享)?Boost.AsioSSL文档说明了这一点,但没有提到上下文。我认为这意味着我必须只对所有内容使用一条链,但我认为这是在OpenSSL支持多线程之前编写的。SSLandThreadsSSLstreamobjectsperformnolockingoftheirown.Therefore,itisessentialthatallasynchronousSSLoperationsareperformedinanimplicitorexplicitstrand.Notethatthismeanst

c++ - 使用 boost 检查 std::string 是否是有效的 uuid

我想使用boost检查给定的字符串是否是有效的UUID。这是我通过查看boost网站上的文档得出的结论:voidvalidate_uuid(conststd::string&value){try{boost::uuids::string_generatorstringGenerator;(void)stringGenerator(value);}catch(conststd::exception&ex){//...}}但是,这并不总是有效。如果我使用对于有效UUID来说太短的字符串调用该函数,则会按预期抛出异常。但是,如果我使用无效的UUID(例如00000000-0000-0000-