
On 3/24/2012 1:52 AM, Michel Morin wrote:
There are two implementations of boost::result_of: a TR1-style implementation and a decltype-based implementation. While the TR1-style implementation has a public interface `boost::tr1_result_of`, decltype-based one doesn't have a public interface.
Yes, I'm the one responsible for this change.
By defining BOOST_RESULT_OF_USE_DECLTYPE, boost::result_of use decltype-based implementation. But this is not always a viable solution, since this breaks some Boost libraries.
So how about adding `boost::cxx11_result_of` as public interface of the decltype-based implementation? Attached a patch to add `boost::cxx11_result_of`. (This patch also changes the name of `cpp0x_result_of_impl` to `cxx11_result_of_impl` to reflect the recent discussion on the cpp/cxx naming.)
The patch looks fine, and I guess I'm as qualified to apply it as anybody. But it doesn't have docs and tests. Care to address that? The docs probably only need a line or two, and you can copy the tests for tr1_result_of.
P.S. Is it worth trying to use this `boost::cxx11_result_of` in `boost::transform_iterator` code on trunk?
Now that we have a macro to detect compliance with N3256, we have a way to safely enable decltype-based result_of by default. We should think about doing that and fixing the bugs this will flush out. This should be a separate step, though, and it should be done very early in a release cycle. -- Eric Niebler BoostPro Computing http://www.boostpro.com