草庐IT

Boost-asio

全部标签

c++ - 使 boost::python::range 接受...一个 boost::range

我有一个C++类,它使用boost::range提供返回范围的函数来公开集合。为了使用boost::python将此类导出到python,我使用函数boost::python::range,它可以接受两个参数:返回集合的开始和结束迭代器的类的成员函数。我想避免为每个集合手动编写开始/结束对,因为我已经提供了范围。但是我无法在boost::python::range上编写一个包装器,接受一个返回范围的成​​员函数作为参数。有任何想法吗?(实际上我有不止一个类,它们是模板化的,所以我的编译器说,模板函数将模板类的成员函数的地址作为模板参数将不起作用)如果可以用g++-4.6编译,我会接受c

c++ - Boost Enum 256 元素限制

我正在使用BoostVault中的枚举v4.6库(提到here[stackoverflow.com]),但遇到了256的元素限制(即每个枚举的最大元素数=256)。我知道这与boost预处理器库有关,一些调查使我找到了boost/preprocessor/config/limits.hpp,但更改这些值没有任何效果,因为它们纯粹是“信息”(link[groups.google.com])有什么办法可以增加这个限制吗? 最佳答案 遗憾的是,无法增加可与Boost预处理器库一起使用的元素/参数的上限。因此,由于枚举库依赖于Boost.P

c++ - boost::mpl::vector - 获取类型的基本偏移量

是否有可能获得mpl::vector的偏移量?在执行mpl::find之后在上面?换句话说,我想做的编译时间等同于:#include#include#includeintmain(){typedefstd::vectorv_type;v_typev_int(3);v_int[0]=1;v_int[1]=2;v_int[2]=3;v_type::iteratorit=std::find(v_int.begin(),v_int.end(),3);std::cout否则,我输入mpl::vector有一个type_trait::ordinalconst硬编码,我想尽可能避免这种情况。重要提示

c++ - Boost asio-acceptor 在没有新连接的情况下解锁?

我正在使用C++boostasio库,我在其中监听套接字上的新连接。获得连接后,我处理请求,然后循环监听另一个套接字上的新连接。while(true){tcp::socketsoc(this->blitzIOService);this->blitzAcceptor.listen();boost::system::error_codeec;this->blitzAcceptor.accept(soc,ec);if(ec){//SomeerroroccuredcerrHandleRequest(soc);soc.shutdown(tcp::socket::shutdown_both);so

c++ - 如何确定编译器对元程序做了什么? (对于 boost.proto)

我如何确定我的编译器(g++)使用模板代码做什么?我正在使用boost.proto(一个表达式模板库)在编译时计算一些数学表达式。代码正确地评估了表达式,但我想看看编译器是否已经将表达式扩展为等同于手写的c代码(即消除了所有临时变量),或者是否还有一些进一步的编译时优化待完成。有没有办法查看编译器对模板做了什么?谢谢 最佳答案 有几种方法可以在模板实例化通过后查看C++代码:使用gcc-fdump-tree-original(甚至可以使用-fdump-tree-all查看更多pass)使用ElsaC++解析器:http://scot

c++ - 我怎样才能让 boost::function 不那么宽松?

typedefboost::functionMyCallback;voidRegisterCallback(MyCallbackcallback);classA{public:voidGoodCallback(intintArg,boolboolArg){printf("callingGoodCallback(%d,%s)\n",intArg,boolArg?"true":"false");}voidBadCallback(intintArg){printf("callingBadCallback(%d)\n",intArg);}};intTestFunction(){A*myA=ne

c++ - boost 序列化多个对象

与thisone稍微相关的问题和thisone.基本上,我想在对象出现时对其进行序列化,就像日志文件一样,只是我想稍后将它们反序列化。这意味着我最初没有所有对象。从之前的回答来看,如果打开同一个存档,似乎可以继续向存档中添加越来越多的对象。但是我该如何提取它们呢?我是否需要在每次提取之前向前看并查看是否达到eof?我是否应该在保存例程中放置一个换行符,以便以后可以逐行读取输入(这可能只适用于二进制存档(可能还有文本),因为xml使用换行符,如果二进制可能使用偶尔换行)?如果到达文件末尾,>>操作可能会抛出异常,我可以将它包装在一个无限循环中,并用trycatch绕过它?如果我想对不同种

c++ - boost::interprocess::basic_string 作为 std::string

我正在尝试用constboost::interprocess::basic_string&替换返回conststd::string&的类方法。我面临的主要挑战是这两个类之间的不兼容性,尽管它们的实现相似。为了更清楚的解释,我将把它放入代码中classA{std::stringm_str;conststd::string&StrVal(){returnm_str;}}现在这个类看起来像这样:typedefboost::interprocess::allocatorShmemAllocatorChar;typedefboost::interprocess::basic_string,Shm

c++ - boost 测试库: Multiple definition error

我正在尝试在QTCreatorforWindows中测试我完成的库(微积分)。我已经创建了一个主文件,并在单独的文件中创建了一个类用于测试。如果我编译在http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/utf/user-guide/test-organization/manual-test-suite.html中找到的示例它有效,所以在http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/utf/user-guide/test-organization/manual-

c++ - 文件 basic_socket.hpp 中的 lib boost asio 1.47.0 出错

当我尝试编译时,以下代码出现错误:voidServer::accept(void){Network::ptrconnection=Network::initialize(this->my_acceptor.get_io_service());this->my_acceptor.async_accept(connection->socket(),bind(&Server::endCmd,this,*connection,placeholders::error));}voidServer::endCmd(Networkconnection,constboost::system::error