#include <boost/utility/result_of.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/mpl/assert.hpp>
struct foo {
template<typename T>
struct result;
};
template<>
struct foo::result<foo(int)> {
typedef void type;
};
namespace bst = boost;
BOOST_MPL_ASSERT((bst::is_same<void, bst::result_of<foo(int)>::type>));
int main() {}