这个c ++函数意味着什么?

时间:2016-06-11 10:39:18

标签: c++ c++11 c++14

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); });
}
  1. (T::*method)是什么意思?我知道T这里有什么。但从未见过像*method这样的东西。前面的*让我很困惑。
  2. 功能体似乎很复杂。我希望通过分解每个部分来理解它。看起来像是lambda。

1 个答案:

答案 0 :(得分:1)

  
      
  1. (T :: *方法)是什么意思?我知道这里有什么。但从未见过类似*方法的东西。前面的*让我感到困惑。
  2.   
method

是名为T的成员函数指针参数。预计会使用签名Future<R> func();获取dispatch()成员函数的地址。

  
      
  1. 功能体似乎很复杂。我希望通过分解每个部分来理解它。看起来像是lambda。
  2.   

这是一个lambda函数调用,是的。 lambda主体调用pid并传递methodclass A: def __init__(self): self.listFoo = [1, 2] self.listBar = [3, 4] def get_list(self, which): if which == "Foo": return self.listFoo return self.listBar a = A() other_list = [5, 6] a.get_list("Foo").extend(other_list) a.get_list("Foo") += other_list #SyntaxError: can't assign to function call 个参数。