2016-06-11 6 views
-2
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. 関数の本体がかなり複雑に見えます。私はそれを構文的に理解するのが大好きです。しかし、ラムダのように私に見える。
+0

メンバ関数ポインタとそれを 'dispatch()'呼び出しに委ねるラムダ関数。 –

答えて

1
  1. (T :: *法)が何を意味するのでしょうか?私はここにTが何かを知っている。しかし、*メソッドのようなものは見たことがありません。前の*は私を混乱させてしまった。
Future<R> (T::*method)() 

methodという名前のメンバ関数ポインタパラメータです。署名がFuture<R> func();Tのメンバー関数のアドレスを取得することが期待されています。

  1. 機能体はかなり複雑に見えます。私はそれを構文的に理解するのが大好きです。しかし、ラムダのように私に見える。

これはラムダ関数呼び出しです。ラムダボディはdispatch()を呼び出し、pidmethodパラメータを渡します。

+0

OK。しかし、[=]()はどういう意味ですか? – soupybionics

+1

[here](http://en.cppreference.com/w/cpp/language/lambda)で説明されているように、_byコピーキャプチャdefault_です。利用可能なドキュメントを読むことについてもっと努力してください(これはあなたにRTFMを伝える非常に良い方法です)。私はあなたの質問BTをしなかった。 –

関連する問題