struct Foo { x int } fn unwrap_concrete(ptr voidptr) Foo { return Foo(ptr) } fn unwrap_generic[T](ptr voidptr) T { return T(ptr) } pub fn main() { foo1 := unwrap_concrete(unsafe { nil }) foo2 := unwrap_generic[Foo](unsafe { nil }) println(foo1) println(foo2) }