私は最近、次のようなコードの一部に出くわしました。
static typename handle_set::iterator find(T* p)
{
return std::find_if(handles().begin(), handles().end(), [p](const std::unique_ptr<T,D>& l) { return l.get() == p; });
}
どこ
typedef typename std::set<std::unique_ptr<T,D>> handle_set;
static handle_set& handles(void)
{
static handle_set h_;
return h_;
}
私の質問はこの部分についてです:
[p](const std::unique_ptr<T,D>& l) { return l.get() == p; }
これは関数の3番目の引数ですstd::find_if()
。3番目の引数は関数ポインターにすることができます。これは、別の関数の引数で関数ポインターを定義するインラインの方法ですか?私はこれまでこの種の使用法を見たことがありません。私の理解は正しいですか?
ありがとう。