Aus*_*Aus 3 c++ boost boost-asio c++11
我以前从未见过这样的语法"[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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
它来自此链接中的 Boost库Async Echo服务器示例
这是lambda 的捕获列表.它捕获变量this(指针)和self上面一行声明的变量.
[...](...){...}
// A B C
Run Code Online (Sandbox Code Playgroud)
以上是代码中lambda的简化语法.A是上面提到的捕获列表(用于从当前范围"捕获"变量).B是参数列表(就像在函数中一样)并且C是正文(再次,就像一个函数).
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |