草庐IT

boost-pool

全部标签

c++ - 是否可以 move boost::optional ?

我一直在尝试在具有boost::optional成员变量的类中定义默认move构造函数。#include#include#includestructbar{std::vectorvec;};structfoo{foo()=default;foo(foo&&)=default;boost::optionalhello;};intmain(){fooa;foob(std::move(a));}我的编译器同时支持move语义和默认的move构造函数,但我无法让它工作。%clang++foo.cc-std=c++11-stdlib=libc++foo.cc:15:7:error:calltod

c++ - boost::asio 完全断开连接

有时boost::asio似乎在我想要它之前断开连接,即在服务器正确处理断开连接之前。我不确定这是怎么可能的,因为客户端似乎认为它完全发送了消息,但是当服务器发出错误时,它甚至没有读取消息头......在测试期间,这可能只发生五分之一,服务器收到客户端关闭消息,并干净地断开客户端。错误:“现有连接被远程主机强行关闭”客户端断开连接:voiddisconnect(){boost::system::error_codeerror;//justcreatesasimplebufferwithashutdownheaderboost::uint8_t*packet=createPacket(P

c++ - Boost.ASIO 性能不佳

我在Windows上使用boost::asio进行了一个非常简单的服务器/客户端性能测试,它的性能似乎很差。我希望我只是错误地使用了该库,并希望得到任何建议。我有一个session类,它先写入一个消息长度,然后再写入一个消息,然后等待读取一个消息长度,然后再读取一条消息,并且不停地一遍又一遍地这样做。但是,当我在自己的计算机上本地运行它时,我会获得极快的性能;当我在一台计算机上运行服务器并在另一台计算机上运行客户端时,即使在同一网络上,性能也会降低,读取/写入操作需要1秒。服务器源代码文件如下:#include#include#include#includeusingnamespace

c++ - boost::lexical_cast 对于 c++11 stoi、stof 和 family 是否是多余的?

既然C++11引入了stoi,stof,boost::lexical_cast是多余的吗?和家人,还是有任何理由仍然使用它?(除了没有C++11编译器)它们提供完全相同的功能吗? 最佳答案 boost::lexical_cast句柄morekindsofconversion,包括迭代器对、数组、C字符串等。提供相同的通用接口(interface)(sto*对不同的类型有不同的名称)是区域敏感的(sto*/to_string只是部分,例如lexical_cast可以处理数千个分隔符,而stoul通常不会)

c++ - 带有 boost shared_ptr 的自定义(池)分配器

我想从一个池中分配由shared_ptr管理的对象,比如Boost的Pool接口(interface),如何实现? 最佳答案 这是执行您想要的操作的代码(可能无法编译,因为我手头没有boost并且我正在从内存中编写它):classYourClass;//yourdatatype,definedsomewhereelseboost::object_poolallocator;voiddestroy(YourClass*pointer){allocator.destroy(pointer);}boost::shared_ptrcreat

c++ - 使用 boost::future 和 "then"延续

C++11std::futurelacksthen方法将延续附加到future。Boostboost::futureprovides这个,还有一个example(我无法运行)我只是无法编译:#include#include#includeboost::futurejoin2(conststd::string&realm){boost::promisep;p.set_value(23);returnp.get_future();}intmain(){boost::futuref=join2("realm1");//here,I'dliketousef.then(..)f.wait();s

c++ - Visual Studio 2017、Boost 和 CMake 的版本号

FromtheBoostmailing列表我了解VS2017有以下我们可能最感兴趣的版本号:VisualStudio15.0cl;C/C++Compiler19.10PlatformToolset:v141以下宏在VisualStudio2017IDE中定义:CrtSDKReferenceVersion14.0MSBuildToolsVersion15.0PlatformToolsetVersion141VCToolsVersion14.10.25017VisualStudioVersion15.0在编译期间,以下变量被#define'd:_MSC_VER1910_MSC_FULL_V

c++ - Boost 计划选项示例

在程序选项的boost在线教程中:http://www.boost.org/doc/libs/1_39_0/doc/html/program_options/tutorial.html#id2891824它说完整的代码示例可以在“BOOST_ROOT/libs/program_options/example”目录中找到。我不知道这是在哪里。谁能帮我找到示例? 最佳答案 在Debian系统上,您可以在/usr/share/doc/libboost-doc/examples/libs/program_options中找到它。否则,我建议

c++ - C++11 是否改变了显式调用 std::swap 以确保找到位于 ADL 的交换的行为,例如 boost::swap?

背景考虑以下代码:#includenamespacens{structfoo{foo():i(0){}inti;private:foo(constfoo&);//notdefined,foo&operator=(constfoo&);//non-copyable};voidswap(foo&lhs,foo&rhs){std::swap(lhs.i,rhs.i);}}templatevoiddo_swap(T&lhs,T&rhs);//implementationtobedeterminedintmain(){ns::fooa,b;do_swap(a,b);}在C++03中,do_swa

c++ - Boost::asio - 如何中断阻塞的 tcp 服务器线程?

我正在开发一个多线程应用程序,其中一个线程充当从客户端接收命令的tcp服务器。线程使用Boost套接字和接受器等待客户端连接,从客户端接收命令,将命令传递给应用程序的其余部分,然后再次等待。代码如下:voidServerThreadFunc(){usingboost::asio::ip::tcp;boost::asio::io_serviceio_service;tcp::acceptoracceptor(io_service,tcp::endpoint(tcp::v4(),port_no));for(;;){//listenforcommandconnectiontcp::socke