Why cannot C# compiler implicitly infer `Foo foo = (int x) => x.ToString();` for the delagate type `static delegate R Foo<I, R>(I i);`?
<pre><code>class Program
{
    static delegate R Foo&lt;I, R&gt;(I i);

    static void Main(string[] args)
    {

        Foo&lt;int, string&gt; foo = (int x) =&gt; x.ToString();

        // Why can't the compiler IMPLICITLY infer the following declaration?
        //Foo foo = (int x) =&gt; x.ToString();
    }
}
</code></pre>

<p>EDIT 1: The code above is not compilable actually. The delegate I defined has static modifier that is not applicable!</p>
