C++ 这个c++;函数是什么意思? 模板 延迟延迟(常量PID和PID,未来(T:::*方法)() { 返回延迟([=](){返回调度(pid,方法);}); } (T::*方法)是什么意思?我知道这里是什么。但从未见过类似于*方法的东西。前面的*把我弄糊涂了 功能体似乎相当复杂。我很想通过分解每个部分来理解它的语法。但在我看来像兰姆达 (T::*方法)是什么意思?我知道这里没有什么。但从未见过类似的方法。前面的*把我弄糊涂了 未来(T::*方法)()

C++ 这个c++;函数是什么意思? 模板 延迟延迟(常量PID和PID,未来(T:::*方法)() { 返回延迟([=](){返回调度(pid,方法);}); } (T::*方法)是什么意思?我知道这里是什么。但从未见过类似于*方法的东西。前面的*把我弄糊涂了 功能体似乎相当复杂。我很想通过分解每个部分来理解它的语法。但在我看来像兰姆达 (T::*方法)是什么意思?我知道这里没有什么。但从未见过类似的方法。前面的*把我弄糊涂了 未来(T::*方法)(),c++,c++11,c++14,C++,C++11,C++14,是名为method的成员函数指针参数。它需要获得签名为Future func()的T成员函数的地址 功能体似乎相当复杂。我很想通过分解每个部分来理解它的语法。但在我看来像兰姆达 这是一个lambda函数调用,是的。lambda主体调用dispatch()并传递pid和方法参数。成员函数指针和lambda函数,该函数将其延迟到dispatch()调用。OK。但是[=]()是什么意思呢?正如所解释的,这是默认的拷贝捕获。请花更多的精力阅读可用的文档(这是告诉您RTFM的一个非常好的方法)。顺便说一句

是名为
method
的成员函数指针参数。它需要获得签名为
Future func()的
T
成员函数的地址

  • 功能体似乎相当复杂。我很想通过分解每个部分来理解它的语法。但在我看来像兰姆达

  • 这是一个lambda函数调用,是的。lambda主体调用
    dispatch()
    并传递
    pid
    方法
    参数。

    成员函数指针和lambda函数,该函数将其延迟到
    dispatch()
    调用。OK。但是[=]()是什么意思呢?正如所解释的,这是默认的拷贝捕获。请花更多的精力阅读可用的文档(这是告诉您RTFM的一个非常好的方法)。顺便说一句,我没有回答你的问题。
    template <typename R, typename T>
    Deferred<Future<R>()> defer(const PID<T>& pid, Future<R> (T::*method)())
    { 
      return Deferred<Future<R>()>([=]() { return dispatch(pid, method); });
    }
    
     Future<R> (T::*method)()