2
当应用于宏def
s时,似乎implicit
关键字不起作用。隐式宏在Scala 2.10.1中找不到?
例如,采取以下的代码:
// 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] = ???
代替implicit def implicitFoo[A]: Foo[A] = macro implicitFoo_impl[A]
,编译成功。
这是错误还是用户错误?