Re: [Boost-users] boost bind beginner throw problem
From: "Peter Dimov"
The following program works for me with VC 7.1. #include <boost/bind.hpp> struct Error {}; struct X { void test( int i ) throw( Error ) {}}; int main() { X obj; boost::bind( &X::test, obj, _1 ); } I try to compile your example, theese are the error messages on my VC 7.1:
::type,const boost::lambda::detail::bind_traits<const boost::lambda::placeholder1_type>::type,const boost::lambda::detail::bind_traits<const boost::lambda::placeholder2_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type>> ] C:\sviluppo\r2\boost\build\1.34.1\include\boost\lambda\detail\bind_functions.hpp(544): error C2664: "boost::lambda::lambda_functor<T>::lambda_functor(const boost::lambda::lambda_functor<T> &)": impossibile convertire il
::type,const boost::lambda::detail::bind_traits<const boost::lambda::placeholder1_type>::type,const boost::lambda::detail::bind_traits<const boost::lambda::placeholder2_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type>> ] and [ Act=boost::lambda::action<4,boost::lambda::function_action<4>>, Args=boost::tuples::tuple<const boost::lambda::detail::bind_traits<void (__thiscall SVLCompiler::Analysis::* const )(SVLCompiler::Analysis::Iteratorp_t,SVLCompiler::Analysis::Iteratorp_t)
C:\sviluppo\r2\boost\build\1.34.1\include\boost\lambda\detail\bind_functions.hpp(544): error C2553: no legal conversion of return value to return type 'type' "const boost::lambda::lambda_functor<T>" with [ T=boost::lambda::lambda_functor_base<boost::lambda::action<4,boost::lambda::function_action<4>>,boost::tuples::tuple<const boost::lambda::detail::bind_traits<void (__thiscall SVLCompiler::Analysis::* const )(SVLCompiler::Analysis::Iteratorp_t,SVLCompiler::Analysis::Iteratorp_t)>::type,const boost::lambda::detail::bind_traits<SVLCompiler::Analysis *const parametro 1 da "boost::lambda::lambda_functor_base<Act,Args>" a "const boost::lambda::lambda_functor<T> &" with [ T=boost::lambda::lambda_functor_base<boost::lambda::action<4,boost::lambda::function_action<4>>,boost::tuples::tuple<const boost::lambda::detail::bind_traits<void (__thiscall SVLCompiler::Analysis::* const )(SVLCompiler::Analysis::Iteratorp_t,SVLCompiler::Analysis::Iteratorp_t)>::type,const boost::lambda::detail::bind_traits<SVLCompiler::Analysis *const throw(SVLCompiler::Analysis::Error_check)>::type,const boost::lambda::detail::bind_traits<SVLCompiler::Analysis *const
::type,const boost::lambda::detail::bind_traits<const boost::lambda::placeholder1_type>::type,const boost::lambda::detail::bind_traits<const boost::lambda::placeholder2_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,
I hope you can help me :-( -- Roberto Taglioretti *sono affetto da discromatopsia, per favore evitate l'invio di mail o allegati colorati* *I have dyschromatopsia, please do not send coloured text or email and attach* Aderite al progetto SETI: http://setiweb.ssl.berkeley.edu/team_display.php?teamid=30233
The following program works for me with VC 7.1. #include <boost/bind.hpp> struct Error {}; struct X { void test( int i ) throw( Error ) {}}; int main() { X obj; boost::bind( &X::test, obj, _1 ); } I try to compile your example, theese are the error messages on my VC 7.1:
C:\sviluppo\r2\boost\build\1.34.1
\include\boost\lambda\detail\bind_functions.hpp(544):
error C2553: no legal conversion of return value to return type 'type' "const boost::lambda::lambda_functor<T>" with
snip [
I hope you can help me
Well I did try it myself, because I noticed that here the lambda bind is mentioned in the error message. However mixing <boost/bind.hpp> with <boost/lambda/bind.hpp> produces another error messages. Above example compiles fine on my pc (using Visual Studio 7.1 and 1.34.0), either using Boost.Bind or Lambda.Bind. Note that both binds are incompatible with each other and under other these circumsatnces they produce 10 pages of cryptic compiler errors.
participants (2)
-
gast128
-
Taglioretti Roberto