2) To provide a map-like container in which I can store things like boost::any objects. OK, maybe this is not for Proto to address but though it might still have something to offer...
Have you checked out Boost.Fusion map or vector for this purpose?
Manjunath