Index: boost/function/detail/prologue.hpp =================================================================== --- boost/function/detail/prologue.hpp (revision 64209) +++ boost/function/detail/prologue.hpp (working copy) @@ -19,8 +19,10 @@ # include # include # include +# include # include # include # include # include +# include #endif // BOOST_FUNCTION_PROLOGUE_HPP Index: boost/function/function_template.hpp =================================================================== --- boost/function/function_template.hpp (revision 64209) +++ boost/function/function_template.hpp (working copy) @@ -1048,8 +1048,22 @@ struct clear_type {}; +#if BOOST_FUNCTION_NUM_ARGS == 3 + typedef boost::_bi::bind_t< + boost::_bi::unspecified + , T0 + , typename BOOST_PP_CAT(boost::_bi::list_av_, BOOST_PP_DEC(BOOST_FUNCTION_NUM_ARGS))< + BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_FUNCTION_NUM_ARGS, T) + >::type + > bind_object_type; + bind_object_type bind_obj; public: + function(const bind_object_type& o) + : bind_obj(o) {} +#endif +public: + function() : base_type() {} template Index: boost/function/function_fwd.hpp =================================================================== --- boost/function/function_fwd.hpp (revision 64209) +++ boost/function/function_fwd.hpp (working copy) @@ -27,6 +27,7 @@ namespace boost { class bad_function_call; + struct bind_signature; #if !defined(BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX) // Preferred syntax Index: boost/bind/storage.hpp =================================================================== --- boost/bind/storage.hpp (revision 64209) +++ boost/bind/storage.hpp (working copy) @@ -53,6 +53,7 @@ template struct storage1< boost::arg > { + storage1() {} explicit storage1( boost::arg ) {} template void accept(V &) const { } @@ -77,6 +78,7 @@ { typedef storage1 inherited; + storage2() {} storage2( A1 a1, A2 a2 ): storage1( a1 ), a2_( a2 ) {} template void accept(V & v) const Index: boost/bind/bind.hpp =================================================================== --- boost/bind/bind.hpp (revision 64209) +++ boost/bind/bind.hpp (working copy) @@ -113,6 +113,7 @@ { public: + value() {} value(T const & t): t_(t) {} T & get() { return t_; } @@ -280,6 +281,7 @@ public: + list2() {} list2( A1 a1, A2 a2 ): base_type( a1, a2 ) {} A1 operator[] (boost::arg<1>) const { return base_type::a1_; } @@ -867,6 +869,7 @@ typedef bind_t this_type; + bind_t() {} bind_t(F f, L const & l): f_(f), l_(l) {} #define BOOST_BIND_RETURN return