Beginning with the definition found in C++ Template Metaprogramming, I'll talk about what is type erasure and how does it work, as well as its advantages and costs. I’ll start with an example taking an inheritance based interface and converting it to one using type erasure. I’ll cover the implementation of Boost.Any, as well as a simplified version of Boost.Function. I’ll touch upon the notion of regular types and classes that work (). I’ll compare using containers of Copyable/Assignable types with that of using containers of Boost.shared_ptr and Boost.Pointer Containers. Download slides here and here