gpt4 book ai didi

c++ - 在 lambda 函数的捕获列表中调用函数

转载 作者:行者123 更新时间:2023-11-30 03:35:48 24 4
gpt4 key购买 nike

在这个 boost asio example我明白了:

auto self(shared_from_this()); //boost::shared_ptr<connection>

boost::asio::async_write(socket_, reply_.to_buffers(),
[this, self](boost::system::error_code ec, std::size_t)
{
//...
}
);

在 Visual Studio 2015 中,如果我写

[this, shared_from_this()](boost::system::error_code ec, std::size_t)

我收到以下错误:

Error C2059 syntax error: ')'

为什么 lambda 函数不能直接从对 shared_from_this() 的调用中捕获 boost::shared_ptr 变量?这不是一回事吗?我找不到任何解释。我读过其他示例(例如 thisthis ,但他们不问这个问题)。

最佳答案

在您的情况下,命名捕获的正确语法是:

[this, self=shared_from_this()]( ... ) 

关于c++ - 在 lambda 函数的捕获列表中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40986532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com