gpt4 book ai didi

c++ - 在 Boost 库 asio 示例中,处理程序分配之前的 [this, self] 是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 20:41:30 25 4
gpt4 key购买 nike

在“[this, self]”之前我从来没有见过这样的语法,我以前写过C并用过C++,现在学习C++11和Boost库,编译器很满意,但我可以了解它的工作原理和作用。

void do_read()
{
auto self(shared_from_this());
socket_.async_read_some(boost::asio::buffer(data_, max_length),
[this, self](boost::system::error_code ec, std::size_t length)
---------^
{
if (!ec)
{
do_write(length);
}
});
}

它来自 this link 中的 Boost 库 Async Echo 服务器示例

最佳答案

那是 lambda 的捕获列表。它正在捕获变量 this(指针)和变量 self 在上面一行中声明。

    [...](...){...}
// A B C

以上是代码中 lambda 的简化语法。 A 是上面提到的捕获列表(用于从当前范围“捕获”变量)。 B 是参数列表(就像在函数中一样),C 是主体(同样,就像函数)。

关于c++ - 在 Boost 库 asio 示例中,处理程序分配之前的 [this, self] 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21141116/

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