似乎该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] = ???
,编译成功。
这是错误还是用户错误?