Boost logo

Boost Users :

Subject: Re: [Boost-users] error C2825: 'F': must be a class or namespace when followed by '::'
From: Jeff Flinn (TriumphSprint2000_at_[hidden])
Date: 2011-04-20 13:23:58


simone pilozzi wrote:
> Dear Users,
>
> I am using a pointer to a function member with the std::transform alorithm.
> The class is a QuantLib class called DayCounter and the method is called
> yearFraction
> and takes in two mandatory dates and two optionals to return the
> corresponding year fraction.
>
> /yearFraction ( QuantLib::Date t1,QuantLib::Date t2,QuantLib::Date t3 =
> Date(),QuantLib::Date t4=Date())/
>
> Now I tried to fill a vector called yearfracs in this way
>
> boost::shared_ptr<QuantLib::DayCounter> dc( new QuantLib::ActualActual);
>
> QuantLib::Date t = todaysDate()
>
> std::vector<QuantLib::Time> yearfracs;
>
> std::transform(subsample.begin(),subsample.end(),
>
> yearfracs.begin(),boost::bind(&QuantLib::ActualActual::yearFraction,&dc,t,_2))

Assuming you want each subsample item to be pass as t2 :

boost::bind
(&QuantLib::ActualActual::yearFraction
,&dc
,t
,_1
, QuantLib::Date()
, QuantLib::Date())

You need the _1, as you are generating a unary function object. IIRC,
you need to specify the default args.

Also I assume yearFracs.size() >= subsamble.size()?

Jeff


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