Won't work.  boost::any doesn't overload the & operator and return the address to its contents.  There is undocumented unsafe_any_cast that allows casting straight to void*, but we probably should use undocumented, unofficially supported parts of the boost api.

However, I have an upcomming performance PR that uses a custom-tweaked version of boost::spirit::hold_any that we can tweak to facilitate the elimination of this large if/switch chain.