这个C++函数是什么意思?
问题描述:
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); });
}
-
(T::*method)
是什么意思?我知道这里是T
。但从未见过类似*method
的东西。前面的*
让我感到困惑。 - 函数体看起来很复杂。我希望通过分解每个部分来在语法上理解它。虽然看起来像lambda。
答
- 什么呢(T :: *法)是什么意思?我知道这里的T是什么。但从未见过类似*方法的东西。前面的*让我感到困惑。
Future<R> (T::*method)()
是名为method
一个成员函数指针参数。预计将获得T
成员函数的地址和签名Future<R> func();
。
- 函数体看起来相当复杂。我希望通过分解每个部分来在语法上理解它。虽然看起来像lambda。
这是一个lambda函数调用,是的。 lambda体调用dispatch()
并传递参数pid
和method
。
+0
好的。但是[=]()是什么意思? – soupybionics
+1
这是_by copy capture default_,如[这里]所述(http://en.cppreference.com/w/cpp/language/lambda)。请花费更多的精力阅读可用的文档(这是一种很好的方式来告诉你RTFM)。顺便说一句,我没有DV你的问题。 –
成员函数指针和一个将其推迟到dispatch()调用的lambda函数。 –