Hello, I am trying to make a simple nested bind in boost. I have the fillowing structure: struct eventInterval { double start, finish, weight; }; and a typedef typedef boost::shared_ptr<eventInterval> eventIntervalPtr; and then I am trying to copy (actually push back to a vector) all elements which have weight > 0.0. I cannot sompile this bit of code: std::vector<eventIntervalPtr> posIntervals, negIntervals, intervals(eventPtr->decomposeIntervals(anchorDate, today)); std::transform(intervals.begin(), intervals.end(), std::back_inserter(posIntervals), boost::bind(std::greater<double>(), boost::bind(&eventInterval::weight, _1), 0.0)); Could someone help me with this issue? Thanks ___________________________________________________________ This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is prohibited. Please refer to http://www.bnpparibas.co.uk/en/information/legal_information.asp?Code=ECAS-8... for additional disclosures.
AMDG przemyslaw.sliwa@uk.bnpparibas.com wrote:
I am trying to make a simple nested bind in boost. I have the fillowing structure:
struct eventInterval { double start, finish, weight; }; and a typedef
typedef boost::shared_ptr<eventInterval> eventIntervalPtr;
and then I am trying to copy (actually push back to a vector) all elements which have weight > 0.0. I cannot sompile this bit of code:
std::vector<eventIntervalPtr> posIntervals, negIntervals, intervals(eventPtr->decomposeIntervals(anchorDate, today));
std::transform(intervals.begin(), intervals.end(), std::back_inserter(posIntervals), boost::bind(std::greater<double>(), boost::bind(&eventInterval::weight, _1), 0.0));
This is equivalent to BOOST_FOREACH(item, intervals) { posIntervals.push_back(item.weight > 0.0); } I don't think this is what you want. Try std::remove_copy_if(intervals.begin(), intervals.end(), !boost::bind(std::greater<double>(), boost::bind(&eventInterval::weight, _1), 0.0)); In Christ, Steven Watanabe
participants (2)
-
przemyslaw.sliwa@uk.bnpparibas.com
-
Steven Watanabe