No, it can't. There are patterns that no monomorphization strategy (including code generation) can express. For example:
func MakeList<T>(x T) List<T> {
...
}
func Foo<T>(x T) {
if ... {
Foo(MakeList(x))
}
}
This is a contrived example, but this shows up from time to time in functional data structures.