The basic problem (I believe) is that when typing Some(_.toInt), the compiler needs to infer the type parameter of Some.apply[A](x: A), and to do that, it first needs to typecheck the arguments. So _.toInt is typechecked with A (considered as an unknown type constant) as expected type. This fails, because anonymous functions are only allowed not to specify parameter types when the expected type is a function type (or starting with Scala 2.12, a Single Abstract Method type). Then the compiler tries again with undefined as the expected type, and fails for the same reason.
In this case, the expected return type would actually be sufficient to determine the type parameter, and then this would allow to typecheck _.toInt, but that's not how it is designed to work.
The gory details, if you want them, are in http://scala-lang.org/files/archive/spec/2.11/06-expressions.html, paragraphs 6.6, 6.23, and 6.26.4.
Stringthen it maybe would be able to infer it in some cases but otherwise you could just pass someClassWithoutToIntand it cannot infer it with underscore, - sebszyllerf(_.toInt) // showin REPL or-Xprint:typerto see how typer sees your code. - som-snytt