As seen in boost::function to implement type erasure but a magnitude faster than the heap allocated holder object