diff --git a/src/libraries/turtle/mock.hpp b/src/libraries/turtle/mock.hpp index 6db9171..11f6661 100644 --- a/src/libraries/turtle/mock.hpp +++ b/src/libraries/turtle/mock.hpp @@ -20,12 +20,11 @@ #include #include #include +#include +#include +#include #include #include -#include -#include -#include -#include #define BOOST_TYPEOF_SILENT #include #include @@ -63,27 +62,20 @@ namespace detail } template< typename M > - struct signature - { - typedef BOOST_DEDUCED_TYPENAME - boost::function_types::result_type< M >::type result; - typedef BOOST_DEDUCED_TYPENAME - boost::function_types::parameter_types< M >::type parameters; - typedef BOOST_DEDUCED_TYPENAME - boost::function_types::function_type< - BOOST_DEDUCED_TYPENAME boost::mpl::push_front< - BOOST_DEDUCED_TYPENAME boost::mpl::pop_front< - BOOST_DEDUCED_TYPENAME boost::mpl::copy< - parameters, - boost::mpl::back_inserter< - boost::mpl::vector<> - > - >::type - >::type, - result + struct signature : + boost::function_types::function_type< + boost::mpl::joint_view< + boost::mpl::single_view< + BOOST_DEDUCED_TYPENAME + boost::function_types::result_type< M >::type + >, + BOOST_DEDUCED_TYPENAME boost::mpl::pop_front< + BOOST_DEDUCED_TYPENAME + boost::function_types::parameter_types< M > >::type - >::type type; - }; + > + > + {}; template< typename E > void set_parent( E& e, const std::string& prefix, diff --git a/src/tests/turtle_test/mock_test.cpp b/src/tests/turtle_test/mock_test.cpp index 5b788cf..117b344 100644 --- a/src/tests/turtle_test/mock_test.cpp +++ b/src/tests/turtle_test/mock_test.cpp @@ -16,38 +16,22 @@ namespace { - void f1(); - int f2( float ); - - BOOST_MPL_ASSERT(( boost::is_same< mock::function< void() >, - mock::function< BOOST_TYPEOF( f1 ) > > )); - BOOST_MPL_ASSERT(( boost::is_same< mock::function< int( float ) >, - mock::function< BOOST_TYPEOF( f2 ) > > )); - - struct example + struct s { - void method1(); - float method2( int ); + void m1(); + float m2( int ); }; - BOOST_STATIC_ASSERT( - (boost::is_same< - mock::function< void() >, - mock::function< - mock::detail::signature< - BOOST_TYPEOF( &example::method1 ) - >::type - > - >::value) ); - BOOST_STATIC_ASSERT( - (boost::is_same< - mock::function< float( int ) >, - mock::function< - mock::detail::signature< - BOOST_TYPEOF( &example::method2 ) - >::type - > - >::value) ); + BOOST_MPL_ASSERT(( + boost::is_same< + void(), + mock::detail::signature< BOOST_TYPEOF( &s::m1 ) >::type + > )); + BOOST_MPL_ASSERT(( + boost::is_same< + float( int ), + mock::detail::signature< BOOST_TYPEOF( &s::m2 ) >::type + > )); } BOOST_AUTO_TEST_CASE( ptr_uniformizes_reference_and_pointer )