草庐IT

boost-lambda

全部标签

c++ - boost UTF-16 字符串的库?

是否有任何boost库可以帮助处理UTF-16(或更高版本)字符串? 最佳答案 我用了ICU过去在处理C++编码时取得了成功。 关于c++-boostUTF-16字符串的库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6242387/

c++ - lambda:应该通过引用捕获 const 引用产生未定义的行为吗?

我刚刚在我的代码中发现了一个讨厌的错误,因为我通过引用捕获了对字符串的const引用。当lambda运行时,原始字符串对象早已不复存在,引用的值是空的,而目的是它将包含原始字符串的值,因此出现错误。让我感到困惑的是,这并没有在运行时引发崩溃:毕竟,这不应该是未定义的行为,因为afaik有一个悬空引用吗?此外,在调试器下查看id时,它看起来甚至不像垃圾,而是像一个正确构造的空字符串。这是测试用例;这只是打印一个空行:typedefstd::vector>functions;voidAddFunction(conststd::string&id,functions&funs){funs.p

c++ - boost::bind 不适用于 boost::tuple::get<N>()

我正在尝试使用boost::bind和STL与boost::tuple,但每次我尝试编译时都会收到以下错误。error:callofoverloaded‘bind(,boost::arg&)’isambiguous你知道我在这里做错了什么吗?为什么只针对boost::arg?谢谢AFG#include#include#include#include#include#include#includeintmain(intargc,constchar**argv){usingnamespaceboost::assign;typedefboost::tupleeth_array;std::ve

c++ - 关闭 Boost 套接字的错误文件描述符

我正在使用Boost1.45ASIO处理在Windows和Mac上运行的应用程序中的一些套接字连接。在Windows上,以下代码不会导致任何错误,并且我的套接字已完全关闭。但是在Mac上,关机和(如果我将其注释掉)关闭函数都会给我“错误的文件描述符”错误。在我调用这段代码之前,套接字工作正常。但是一旦我调用关闭或关闭,我就会收到错误消息。知道会发生什么吗?if(socket.is_open()){socket.shutdown(socket.both);socket.close();} 最佳答案 close上的“Badfiledes

c++ - boost::scoped_lock 不适用于局部静态变量?

我制作了以下示例程序来使用boost线程:#pragmaonce#include"boost\thread\mutex.hpp"#includeclassThreadWorker{public:ThreadWorker(){}virtual~ThreadWorker(){}staticvoidFirstCount(intthreadId){boost::mutex::scoped_lock(mutex_);staticinti=0;for(i=1;i主类://ThreadTest.cpp#include"stdafx.h"#include"boost\thread\thread.hpp

c++ - 从不同线程写入 boost::asio 套接字

在我们的应用程序中,我们使用Boost库(以及用于网络通信的ASIO)。最近,我们发现如果我们通过同一个套接字从不同线程发送数据,我们的客户端应用程序将接收到垃圾数据。突出问题的小测试:#include#include#includevoidsend_routine(boost::shared_ptrs,charc){std::vectordata(15000,c);data.push_back('\n');for(inti=0;i(newtcp::socket(io_service));socket->connect(*iterator);boost::threadt1(send_r

c++ - Lambda 和 std::function

我正在努力学习C++11和所有出色的新功能。我有点卡在lambda上。这是我能够开始工作的代码:#include#include#include#include#includeusingnamespacestd;templatevectorfindMatches(vectorsearch,Funcfunc){vectortmp;for(autoitem:search){if(func(item)){tmp.push_back(item);}}returntmp;}voidLambdas(){vectortestv={1,2,3,4,5,6,7};autoresult=findMatch

c++ - 使用迭代器从 boost 多索引中删除项目时的一致性

我知道下面的代码对于std::vectors和更普遍的所有STL容器来说是不正确的:std::vector::iteratorit=array.begin();for(;it!=array.end();it++){...array.erase(it);...}因为删除元素后需要更新迭代器。我想知道boost多索引是否相同,例如,下面的内容是否正确:my_index::iteratorit=index.get().begin();for(;it!=index.get().end();it++){...index.erase(it);...}我想确保理解文档的以下段落:http://www

c++ - boost::container 是否支持 C++11 初始化列表?

在Boost.Container网站上我们可以看到:Boost.Containerdoesnotsupportinitializerlistswhenconstructingorassigningcontainersbutitwillsupportitforcompilerswithinitialized-listsupport.(...)对不起,如果我只是愚蠢,但我真的不知道如何阅读它。这是否意味着它会在不可预测的future这样做,或者它现在应该与符合标准的编译器一起工作?我已经在GCC4.7和ICC13.0上测试过它,两者都不起作用,但我相信我可能错过了一些非常重要的东西,比如正

c++ -/boost/lockfree/queue.hpp: 错误: 静态断言失败: (boost::has_trivial_destructor<T>::value)

我正在尝试替换boost::lockfree::queue对于std::queue在这个文件中https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp我添加了#include;改线130,std::queuem_actions;,至boost::lockfree::queuem_actions;;删除所有与锁定有关的行;并更改了行103,m_actions.pop();,至m_actions.pop(a);.我在sconsbroadcas