How can I instantiate a lambda closure type in C++11/14? : <p>I'm <a href="https://stackoverflow.com/questions/55708180/lambda-closure-type-constructors">aware</a> that there's no default constructor for lambda closure type. But does that mean it's impossible to instantiate it after it being passed as a template parameter?</p>

<p>Consider the following <a href="https://ideone.com/QnPYL8" rel="noreferrer">minimal example</a>:</p>

<pre><code>#include &lt;iostream&gt;

template &lt;typename FuncType&gt;
std::pair&lt;int,int&gt; DoSomething() {
    return FuncType()(std::make_pair(1,1));
}

int main() {
    auto myLambda = [](std::pair&lt;int,int&gt; x) {
        return std::make_pair(x.first*2,x.second*2);
    };
    std::pair&lt;int,int&gt; res = DoSomething&lt;decltype(myLambda)&gt;();
    return 0;
}
</code></pre>

<p>For performance reasons, <a href="https://stackoverflow.com/questions/5057382/what-is-the-performance-overhead-of-stdfunction">I can't use <code>std::function</code></a> to avoid virtual pointer calls. Is there a way to do this? I need to instantiate that lambda once and use it many times inside that function. </p>

<p>How does the standard library make it work when <code>decltype(myLambda)</code> is passed to something like <code>std::map</code> comparators in the template parameter?</p>
