title: Why `def hello[T](f: => T) = f; hello(()=>12)` is compilable but `def hello(f: => Int) = f; hello(()=>12)` is not?
body: <p>Following code can be compiled:</p>
  
  <pre><code>def hello[T](f: =&gt; T) = f
  hello(() =&gt; 12)
  </code></pre>
  
  <p>But following not:</p>
  
  <pre><code>def hello(f: =&gt; Int) = f
  hello(() =&gt; 12)
  </code></pre>
  
  <p>Which reports error:</p>
  
  <pre><code>&lt;console&gt;:9: error: type mismatch;
   found   : () =&gt; Int
   required: Int
                    hello(() =&gt; 12)
  </code></pre>
  
  <p>Why?</p>