草庐IT

boost-lambda

全部标签

c++ - 传递 Lambda 时,Visual Studio 2017 中的什么扩展消除了 "bool"与 "std::function"的歧义?

以下代码在VisualStudio2017中使用MSVC编译器编译,但在GCC或Clang中编译失败。#include#includevoidfunctionTest(std::function){std::cout要解决这个问题,我们可以像这样使用enable_if:#include#includevoidfunctionTest(std::function){std::cout::value>::type>voidfunctionTest(BOOL_TYPE){std::cout或者我可以通过引入用户类型而不是bool来消除歧义(如果构造函数存在歧义问题,您需要这样做):#incl

c++ - (C++14) lambda 数组 : error: 'name' declared as array of 'auto'

我很难解决这个错误。我承认,我是C++的新手,我的困难来自于不理解错误消息。代码如下:autoselectionFuncs[8]={[&](constVector3&min,constVector3&max){returnmax.x_==seamValues.x_||max.y_==seamValues.y_||max.z_==seamValues.z_;},[&](constVector3&min,constVector3&max){returnmin.x_==seamValues.x_;},[&](constVector3&min,constVector3&max){returnm

c++ - 为什么我的 Boost.Regex 搜索只报告一次匹配迭代?

我试图找出一个字符串中有多少个正则表达式匹配项。我正在使用迭代器来迭代匹配项,并使用整数来记录有多少匹配项。longintbefore=GetTickCount();stringtext;boost::regexre("^(\\d{5})\\s(\\d{8})\\s(.*)\\s(.*)\\s(.*)\\s(\\d{8})\\s(.{1})$");char*buffer;longlength;longcount;ifstreamf;f.open("c:\\temp\\test.txt",ios::in|ios::ate);length=f.tellg();f.seekg(0,ios::

c++ - 从列表中删除 boost::shared_ptr 的正确方法是什么?

我有一个std::list的boost::shared_ptr我想从中删除一个项目,但我只有一个T*类型的指针,它与列表中的一个项目匹配。但是我不能使用myList.remove(tPtr)我猜是因为shared_ptr没有实现==为其模板参数类型。我的直接想法是尝试myList.remove(shared_ptr(tPtr))这在语法上是正确的,但它会因临时shared_ptr后的双重删除而崩溃有一个单独的use_count。std::list>myList;T*tThisPtr=newT();//Thisiswrong;onlydoneforexamplecode.//stand-

c++ - 如何让Boost::random和Matlab产生相同的随机数

为了检查我的C++代码,我希望能够让Boost::Random和Matlab产生相同的随机数。所以对于Boost,我使用代码:boost::mt19937var(static_cast(std::time(0)));boost::uniform_intdist(1,6);boost::variate_generator>die(var,dist);die.engine().seed(0);for(inti=0;i产生(程序的每次运行):4456464634对于matlab,我使用:RandStream.setDefaultStream(RandStream('mt19937ar','s

c++ - 是否可以将boost库的广度优先搜索算法应用于矩阵?

我的任务是在矩阵中找到从一点到另一点的最短路线。只能在这样的方向上移动(上、下、左、右)。0000100010000000000101F001010000000100000S0100100000001000000010S-起点F-目的地(Finish)0-空闲单元格(我们可以穿过它们)1-“墙”(我们不能穿过它们)很明显,广度优先搜索以最佳方式解决了这个问题。我知道Boost库提供了这个算法,但我以前没有使用过Boost。如何使用Boost在我的案例中进行广度优先搜索?据我了解,Boost的广度优先搜索算法仅适用于图形。我想将矩阵转换为具有m*n顶点和m*(n-1)+(m-1)*n的图

c++ - Boost 单元测试编译通过 Eclipse 失败

我想通过Eclipse编译以下代码行,但在构建期间我会得到我无法理解的错误。有没有人有解决方案来解决它。#include#defineBOOST_TEST_DYN_LINK#defineBOOST_AUTO_TEST_MAIN#defineBOOST_TEST_MODULEFirst_TestSuiteBOOST_AUTO_TEST_CASE(First_TEst){BOOST_CHECK(2==2);}错误12:55:13****IncrementalBuildofconfigurationDebugforprojectNewProject****Info:InternalBuild

c++ - Boost 程序选项 - 解析命令行时崩溃

我有以下boost::program_options程序。boost::program_options::options_descriptionopts("Allowedoptions");opts.add_options()("help","producehelpmessage"),("mingw",boost::program_options::value(),"SettheinstallpathforMinGW"),("triple",boost::program_options::value(),"Setthetargettriple"),("output",boost::pr

c++ - 当 lambda 作为参数传入时推导模板参数

我正在尝试编写函数func这样编译器就可以推断出模板参数,当我传入std::function时它会起作用,但不适用于lambda:templateTResultfunc(std::functionf){returnTResult();}intmain(){//VisualStudio2013intresult=func([](){//error:'TResultfunc(std::function)':couldnotdeducetemplateargumentfor'std::function'from'main::'return100;});std::functiontestFun

c++ - 从 std::thread 调用 boost::asio::io_service::run

我有一个处理我的连接的类,它有一个boost::asio::io_service成员。我想从std::thread调用io_service::run(),但我遇到了编译错误。std::threadrun_thread(&boost::asio::io_service,std::ref(m_io_service));不起作用。我看到了使用boost::thread执行此操作的各种示例,但我想为此坚持使用std::thread。有什么建议么?谢谢 最佳答案 我知道有两种方法,一种是通过lambda创建std::thread。std::t