title: Simple issue - "Error: missing argument list for method"
body: <p>I have a simple class and a companion object with apply methods overloaded:</p>
  
  <pre><code>case class A(val s: String,
           val x: Int,
           val y: Int,
           val z: Int,
           val foo: Int =&gt; Int,
           val l: Option[List[String]])
  
  object A {
      def apply(s: String, x: Int, y: Int, z: Int, foo: Int =&gt; Int) =
          new A(s, x, y, z, foo, None)
  
      def apply(s: String, x: Int, y: Int, z: Int, foo: Int =&gt; Int, l: List[String]) =
          new A(s, x, y, z, foo, Some(l))
  }
  </code></pre>
  
  <p>Let's also define a function: </p>
  
  <pre><code>def foo(x: Int): Int = x + 1
  </code></pre>
  
  <p>Using the first constructor works:</p>
  
  <pre><code>scala&gt; val a1 = A("a1", 1, 2, 3, foo)
  a1: A = A(a1,1,2,3,$$Lambda$1842/2112068307@598e02f0,None)
  </code></pre>
  
  <p>However using the second does not:</p>
  
  <pre><code>val a2 = A("a1", 1, 2, 3, foo, List("b1", "b2"))
  &lt;console&gt;:24: error: missing argument list for method foo
  Unapplied methods are only converted to functions when a function type is expected.
  You can make this conversion explicit by writing `foo _` or `foo(_)` instead of `foo`.
         val a2 = A("a1", 1, 2, 3, foo, List("b1", "b2"))
  </code></pre>
  
  <p>The question(s): What is the reason I need to pass <code>foo _</code> or <code>foo(_)</code> instead of just foo as in the <code>a1</code> example? Also, can I redefine my class to make it possible to just use <code>foo</code>?</p>