 <p>If I understood your requirements correctly, you can first let your lambda functor accept an argument of the appropriate type (passing by reference here, so take care of lifetime issues): </p> <pre><code>doSomething([](QNetworkReply* p) { // Here you have the sender referenced by p }); </code></pre> <p>Then, your <code>doSomething()</code> template function could use <code>std::bind()</code> to make sure your lambda will be invoked with the appropriate object as its argument:</p> <pre><code>template&lt;typename Functor&gt; void MyClass::doSomething(Functor f) { connect(network_reply, &amp;QNetworkReply::finished, bind(f, network_reply)); //... } </code></pre>