By-name type parameters

pass-by-name, scala

Solution

You’ll have to provide your own lazy wrapper. Something like this:

class Lazy[T](wrp: => T) {
  lazy val value: T = wrp
}

and then:

def bar(x: Foo[Lazy[T]]): Int = ???

Problem

Imagine I have the following class definition: ``` class Foo[T] ``` and I want to do the following ``` def bar(x:Foo[ =>Int ]):Int = ??? ``` But compiler fails with "no by-name parameter type allowed here" How can I use a by-name type as type parameter for a generic method?

Original source