diff --git a/src/libraries/turtle/log.hpp b/src/libraries/turtle/log.hpp index 14b3cf4..faf8faf 100644 --- a/src/libraries/turtle/log.hpp +++ b/src/libraries/turtle/log.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -20,6 +21,14 @@ namespace boost template< typename T > class shared_ptr; template< typename T > class weak_ptr; +namespace phoenix +{ + template< typename T > struct actor; +} +namespace lambda +{ + template< typename T > struct lambda_functor; +} namespace assign_detail { template< typename T > class generic_list; @@ -64,7 +73,7 @@ namespace detail3 struct holder_imp : holder { explicit holder_imp( const T& t ) - : t_( &t ) + : t_( boost::addressof( t ) ) {} virtual void serialize( std::ostream& s ) const { @@ -149,7 +158,7 @@ namespace detail2 struct formatter { explicit formatter( const T& t ) - : t_( &t ) + : t_( boost::addressof( t ) ) {} void serialize( stream& s ) const { @@ -269,7 +278,16 @@ namespace detail { return s << mock::format( t.lock() ); } - + template< typename T > + stream& operator<<( stream& s, boost::lambda::lambda_functor< T > ) + { + return s << '?'; + } + template< typename T > + stream& operator<<( stream& s, boost::phoenix::actor< T > ) + { + return s << '?'; + } template< typename T > BOOST_DEDUCED_TYPENAME boost::enable_if< boost::function_types::is_callable_builtin< T >, diff --git a/src/tests/turtle_test/log_test.cpp b/src/tests/turtle_test/log_test.cpp index 14a65b1..416a816 100644 --- a/src/tests/turtle_test/log_test.cpp +++ b/src/tests/turtle_test/log_test.cpp @@ -12,8 +12,16 @@ #include #include #include +#ifdef _MSC_VER +#pragma warning( push, 0 ) +#endif +#include #include #include +#include +#ifdef _MSC_VER +#pragma warning( pop ) +#endif #include #include #include @@ -578,6 +586,7 @@ namespace BOOST_AUTO_TEST_CASE( boost_phoenix_functor_yields_question_mark_when_serialized ) { BOOST_CHECK_EQUAL( "?", to_string( boost::phoenix::bind( &some_function ) ) ); + BOOST_CHECK_EQUAL( "?", to_string( boost::phoenix::arg_names::_1 < 42 ) ); } BOOST_AUTO_TEST_CASE( boost_bind_functor_yields_question_mark_when_serialized ) @@ -588,4 +597,5 @@ BOOST_AUTO_TEST_CASE( boost_bind_functor_yields_question_mark_when_serialized ) BOOST_AUTO_TEST_CASE( boost_lambda_functor_yields_question_mark_when_serialized ) { BOOST_CHECK_EQUAL( "?", to_string( boost::lambda::bind( &some_function ) ) ); + BOOST_CHECK_EQUAL( "?", to_string( boost::lambda::_1 < 42 ) ); }