似乎该implicit关键字在应用于宏时不起作用def。
例如,采用以下代码:
// Compilation unit A:
case class Foo[A]
// end A.
// Compilation unit B:
implicit def implicitFoo[A]: Foo[A] = macro implicitFoo_impl[A]
def implicitFoo_impl[A](c: Context): c.Expr[Foo[A]] =
c.universe.reify(Foo[A])
// end B.
// Compilation unit C:
implicitly[Foo[Int]] // Fails with "could not find implicit value for parameter e: Foo[Int]
// end C.
失败,但implicitly[Foo[Int]]不应该;如果我替换implicit def implicitFoo[A]: Foo[A] = macro implicitFoo_impl[A]为implicit def implicitFoo[A]: Foo[A] = ???,编译成功。
这是错误还是用户错误?