At a high-level, I'm curious to know how implicits defined inside a class body are resolved? I assumed they would be considered part of the current scope (as per the awesome answer [here](https://stackoverflow.com/questions/5598085/where-does-scala-look-for-implicits)), but I am wrong.

For a specific example, why doesn't the following work:

```
trait Convert[T, U] { 
  final def value(record: T)(implicit f: T => U): U = f(record) 
}

case class ConvertMap(key: String) 
  extends Convert[Map[String, String], Boolean] { 
  implicit def a2b(m: Map[String, String]): Boolean = m.contains(key)
}

```

I can instantiate the class `ConvertMap`, but when I call the `value` method I get an error stating that the view from Map[String, String] => Boolean can't be found.

```
scala> val c = ConvertMap("key")
c: ConvertMap = ConvertMap(key)

scala> c.value(Map("key" -> "value"))
<console>:13: error: No implicit view available from Map[String,String] => Boolean.

```