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]
,編譯成功。
這是錯誤還是用戶錯誤?