When I frist saw the title of Zach Laine's talk, I was confused too. Type erasure for me is what happens with generics in Java, i.e. type information is discarded after compilation.
In this case, the type is still present at runtime. I saw this technique described as "type safe void*", which is paradoxal to me.
However, I do get the idea behind this, but I think "type erasure" is a wrong name for it.