Added BOOST_RESULT_OF_USE_DECLTYPE to allow decltype for using boost .then()