I've been using Phoenix (the one that came with 1.44 - that's Phoenix v2?) for a bit, as a Boost.Lambda replacement, mostly happily. But I've come across a scenario I don't think Phoenix caters for, namely accessing an exception from a catch_ body, something like this:

std::vector<std::string> errors;
using namespace boost::phoenix;
using namespace boost::phoenix::arg_names;
std::for_each(changes.begin(), changes.end(), 
   try_
   [
      bind(&SomeClass::AddChange, this, arg1, std::string())
   ]
   .catch_<std::runtime_error>()
   [
      push_back(ref(errors), bind(&std::runtime_error::what, /* Can I access the exceptin that's been thrown? */))
   ]);

I want to aggregate any error information thrown by SomeClass::AddChange in the 'errors' vector, to be rethrown after the for_each. In Boost.Lambda, I'd be able to use the '_e' placeholder to access the exception object, but there seems to be no way of doing so in Phoenix?

So, I'm just wondering if a) I've missed something, and b) is there any likelihood of this being added into Phoenix v3 at some point?

Stuart Dootson