草庐IT

boost-lambda

全部标签

c++ - lambda 闭包中的模板

谁能告诉我为什么下面的代码namespacedetail{...templatevoidduk_get_args(duk_context*&context,std::function&func){duk_get_args_impl(context,func,std::index_sequence_for());}}templateduk_c_functionduk_function(std::functionfunction_item){std::functionclosure_function=function_item;duk_c_functionfunction_return=[

c++ - boost::asio::streambuf - 如何重用缓冲区?

我正在实现使用asiosocket.async_read()和boost::asio::async_read_until()方法从套接字异步读取数据的TCP服务器。两者都使用相同的处理程序从boost::asio::streambuf读取数据。通过async_read()调用的完美处理程序:voidhandle_read(constboost::system::error_code&ec,std::size_tytes_transferred)){m_request_buffer.commit(bytes_transferred);boost::asio::streambuf::con

c++ - std::functions 和 lambda 函数传递

我有一个将std::function作为参数的类,我分配了一个lambda函数。它在构造函数中工作,但之后停止工作。调试器在运行第一行后说f是“空的”。为什么?#include#include#includetypedefstd::functionconst&fn;classTestClass{public:TestClass(fn_f):f(_f){F();}voidF(){f("hello");};private:fnf;};intmain(){TestClasst([](std::stringstr){std::cout调用t.F()会导致错误。为什么?我可以通过将其更改为以下内

c++ - VC 2013 与 2015 中的 Lambda 删除器

我正在将一些旧代码从VC2013移至2015。下面的简化代码在VC2013中运行良好,但在2015年失败:errorC2664:'voidmain::::operator()(main::D*&)const':cannotconvertargument1from'main::D*'to'main::D*&'我不是在寻找解决方案,而是在寻找更改内容和更改原因的解释。谢谢。#includeintmain(){classD{};automydel=[](D*&p){deletep;p=0;};std::unique_ptrup(newD);return0;} 最佳

c++ - Lambda 的 "this"捕获返回垃圾

我正在实现我自己的类,该类提供其成员的惰性初始化。而且我遇到了在lambda中捕获this的奇怪行为。这是一个重现此错误的示例。//Baz.h#include#include#include"Lazy.hpp"structFoo{std::stringstr;Foo()=default;Foo(std::stringstr):str(str){}Foo(Foo&&that):str(that.str){}};classBaz{std::stringstr;Lazy>foo;public:Baz()=default;Baz(conststd::string&str):str(str){/

Python3、Boost-Python 和 Cpp 链接器错误

所以我打算把我的笔记本电脑扔出窗外,然后去烧掉AppleHQ。查看以下更新:我无法让python3、boost-python和clang相互协作。我遇到的错误正在运行:clang++-ohello.sohello.cpp调用响应:Undefinedsymbolsforarchitecturex86_64:"__Py_NoneStruct",referencedfrom:boost::python::api::object::object()inhello-0c512e.o"_main",referencedfrom:implicitentry/startformainexecutabl

c++ - 是否存在无法避免 lambda 中的尾随返回类型语法的情况?

关于之前的问题(IsitpossibletoreturnanobjectoftypeTbyreferencefromalambdawithoutusingtrailingreturntypesyntax?),我想知道是否还有任何其他重要的案例或示例,其中trailing-return-type语法在使用lambda时可以不被避免。 最佳答案 在C++14中,一个有点人为的例子是将sfinae与通用lambda结合使用:[](auto&&arg)->decltype(arg.f(),void()){/*dowhateveryouwan

c++ - 如何用数据创建一个boost线程?

我在使用boost::bind和创建线程时遇到了一些问题。本质上,我想在“扫描仪”对象上调用“扫描”函数,使用绑定(bind)。像这样:Scannerscanner;intid_to_scan=1;boost::threadthr1(boost::bind(&scanner::scan));但是,我在语法上被绊倒了。如何将数据传递给扫描?作为构造函数的一部分? 最佳答案 请记住,任何成员函数的第一个参数都是对象。所以如果你想调用:scanner*s;s->scan()对于bind你会使用:boost::bind(&scanner::

c++ - 将带有 Boost 的 C++ 应用程序从 Linux 移动到带有 Visual Studio 6 的 Windows

2年前,我在Linux中使用Boost编写了一个小程序。现在我想让它在Windows中工作。我发现我的libs文件夹中几乎没有.a文件。我想知道如何让它在Windows中工作?我需要在Windows中构建Boost来获取库还是可以在某处下载?我正在使用VisualStudio6。 最佳答案 是的,您需要针对不同的平台重新编译。巧合的是,我在这个notlongago上发布了说明.我非常建议您不要使用VisualStudio6。它非常过时,而且非常不合规。您可以免费获得较新的版本,如Express。您不会错过任何东西。

c++ - Boost序列化断言失败

我使用boost的二进制序列化,直到现在它运行良好。我有std::list指向序列化输出(oarchive)的指针,但序列化在对象的serialize()函数中失败,带有MSVC的对话框:R6010-abort()hasbeencalled这样的字符串被打印到控制台窗口中:Assertionfailed:0==static_cast(t)||1==static_cast(t),filec:\programfiles\boost\boost_1_44\boost\archive\basic_binary_oprimitive.hpp,line91这是什么意思?项目非常大,资源是分布式的,