Boost logo

Boost Users :

From: Olivier Tournaire (olitour_at_[hidden])
Date: 2007-11-14 17:09:20


I used this piece of code :

#include <boost/shared_ptr.hpp>
#include <boost/bind.hpp>

namespace
{
    template< typename T > class A {};

    class B {};

    enum E
    {
        eVal
    };

    class C
    {
    public:
        template< typename T > void F( boost::shared_ptr< T >,
boost::shared_ptr< A< unsigned char > >, E = eVal ) {}
    };
}

int main()
{
    boost::shared_ptr< A< unsigned char > > a( new A< unsigned char > );
    boost::shared_ptr< B > b( new B );
    boost::shared_ptr< C > c( new C );
    boost::bind( &C::F< B >, c, b, a, eVal );
    return 0;
}

Does not compile under VC2003, but compiles fine under VC2005. So, id
someone already used boost.bind under VC2003 ? I really would appreciate
help ...

Regards

2007/11/14, Ovanes Markarian <om_boost_at_[hidden]>:
>
> I would suggest to try it with a small piece of code in an independent
> project. This project can easily be migrated to VC2005.
>
> On 11/14/07, Olivier Tournaire <olitour_at_[hidden]> wrote:
> >
> > Same problem with 1.34.1. I really think that this errors come from my
> > compiler. I sould try with VC 2005, but it is very difficult for me and all
> > my projects ...
> >
> > 2007/11/14, Ovanes Markarian < om_boost_at_[hidden]>:
> > >
> > > Olivier,
> > > I did my tests with boost 1.34.1 and VC Express 2005. Can you try at
> > > least with the version 1.34.1 of boost and your current compiler?
> > >
> > > Best Regards,
> > >
> > > Ovanes
> > >
> > >
> > > >
> > > > On 11/14/07, Olivier Tournaire <olitour_at_[hidden]> wrote:
> > > > >
> > > > > Hi,
> > > > >
> > > > > Does someone has an issue to this problem ? I am under VC7.1 with
> > > > > boost 1.33.1
> > > > >
> > > > > 2007/11/13, Olivier Tournaire < olitour_at_[hidden]>:
> > > > > >
> > > > > >
> > > > > >
> > > > > > 2007/11/13, Ovanes Markarian < om_boost_at_[hidden]>:
> > > > > > >
> > > > > > > And the function template ComputeRadiometries is the member of
> > > > > > > the Profile class? Can you please write the second error?
> > > > > >
> > > > > >
> > > > > > Yes. Please note that ComputeRadiometries is a member of the
> > > > > > Profile class, and that I call it a member of the MPPGraph class. Here is
> > > > > > the second error :
> > > > > >
> > > > > > error C2780:
> > > > > > 'boost::_bi::bind_t<R,boost::_mfi::cmf8<R,T,B1,B2,B3,B4,B5,B6,B7,B8>,_bi::list_av_9<A1,A2,A3,A4,A5,A6,A7,A8,A9>::type>
> > > > > > boost::bind(R (__thiscall T::* )(B1,B2,B3,B4,B5,B6,B7,B8)
> > > > > > const,A1,A2,A3,A4,A5,A6,A7,A8,A9)' : 10 arguments attendus - 4 fournis
> > > > > >
> > > > > > E:\librairies\boost_1.33.1_build\include\boost\bind\bind_mf_cc.hpp(222) :
> > > > > > voir la déclaration de 'boost::bind'
> > > > > >
> > > > > > However, where I write a simple function which encapsulates
> > > > > > ComputeRadiometries, I got no error :
> > > > > >
> > > > > > void lance_thread( boost::shared_ptr<Profile> p ,
> > > > > > boost::shared_ptr< TTImage <unsigned char> > image , eInterpolatorType
> > > > > > typeinterp)
> > > > > > {
> > > > > > p->ComputeRadiometries(image,typeinterp);
> > > > > > }
> > > > > >
> > > > > > // In another member function :
> > > > > >
> > > > > > boost::shared_ptr<Profile> p2 ( new
> > > > > > Profile(origine+(double)i*width_sur_nb_fois_wdir,rect->GetHeightDirection(),MPPParameters_.ProfilesNbPoints_,MPPParameters_.ProfilesDistancePoints_
> > > > > > ) );
> > > > > > boost::shared_ptr<Profile> p3 ( new
> > > > > > Profile(origine+(double)(-i)*width_sur_nb_fois_wdir,rect->GetHeightDirection(),MPPParameters_.ProfilesNbPoints_,MPPParameters_.ProfilesDistancePoints_
> > > > > > ) );
> > > > > > lance_thread(p2,image_,BICUBIC);
> > > > > > lance_thread(p3,image_,BICUBIC);
> > > > > >
> > > > > > Regards
> > > > > >
> > > > > > On 11/13/07, Olivier Tournaire <olitour_at_[hidden]> wrote:
> > > > > > > >
> > > > > > > > Here is the method signature :
> > > > > > > >
> > > > > > > > // in profile.hpp
> > > > > > > > template <class T> void ComputeRadiometries(
> > > > > > > > boost::shared_ptr< TTImage <T> > image , const eInterpolatorType
> > > > > > > > type_interpolator=BICUBIC )
> > > > > > > > {
> > > > > > > > // ...
> > > > > > > > }
> > > > > > > >
> > > > > > > > Here is how I create the threads
> > > > > > > >
> > > > > > > > // ...
> > > > > > > > boost::shared_ptr<Profile> p2 ( new
> > > > > > > > Profile(origine+(double)i*width_sur_nb_fois_wdir,rect->GetHeightDirection(),MPPParameters_.ProfilesNbPoints_,MPPParameters_.ProfilesDistancePoints_
> > > > > > > > ) );
> > > > > > > > boost::thread t(
> > > > > > > > boost::bind
> > > > > > > > (
> > > > > > > > &Profile::template
> > > > > > > > ComputeRadiometries<unsigned char>
> > > > > > > > , p2
> > > > > > > > , image_
> > > > > > > > , BICUBIC
> > > > > > > > )
> > > > > > > > );
> > > > > > > >
> > > > > > > > 2007/11/13, Ovanes Markarian < om_boost_at_[hidden]>:
> > > > > > > > >
> > > > > > > > > Can you please post here som example how you function
> > > > > > > > > signature looks like, and how you create a new thread?
> > > > > > > > >
> > > > > > > > > Regards,
> > > > > > > > > Ovanes
> > > > > > > > >
> > > > > > > > > On 11/13/07, Olivier Tournaire <olitour_at_[hidden]> wrote:
> > > > > > > > >
> > > > > > > > > > Geat, seems simpler. However, it does not compile for
> > > > > > > > > > me (boost 1.33.1). Aot of error, but the first one seems
> > > > > > > > > > to be the more interesting :
> > > > > > > > > >
> > > > > > > > > > error C2780:
> > > > > > > > > > 'boost::_bi::bind_t<R,boost::_mfi::dm<R,T>,_bi::list_av_1<A1>::type>
> > > > > > > > > > boost::bind(R T::* ,A1)' : 2 arguments attendus - 4 fournis
> > > > > > > > > >
> > > > > > > > > > (translation attempt : [...] 2 args waited, 4 given)
> > > > > > > > > >
> > > > > > > > > >
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > Boost-users mailing list
> > > > > > > Boost-users_at_[hidden]
> > > > > > > http://lists.boost.org/mailman/listinfo.cgi/boost-users
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Le temps des cerises reviendra. Dans l'immédiat, c'est le temps
> > > > > > des noyaux. Courage.
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Le temps des cerises reviendra. Dans l'immédiat, c'est le temps
> > > > > des noyaux. Courage.
> > > > >
> > > > > _______________________________________________
> > > > > Boost-users mailing list
> > > > > Boost-users_at_[hidden]
> > > > > http://lists.boost.org/mailman/listinfo.cgi/boost-users
> > > > >
> > > >
> > > >
> > >
> > > _______________________________________________
> > > Boost-users mailing list
> > > Boost-users_at_[hidden]
> > > http://lists.boost.org/mailman/listinfo.cgi/boost-users
> > >
> >
> >
> >
> > --
> > Le temps des cerises reviendra. Dans l'immédiat, c'est le temps des
> > noyaux. Courage.
> >
> > _______________________________________________
> > Boost-users mailing list
> > Boost-users_at_[hidden]
> > http://lists.boost.org/mailman/listinfo.cgi/boost-users
> >
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>

-- 
Le temps des cerises reviendra. Dans l'immédiat, c'est le temps des noyaux.
Courage.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net