【发布时间】:2011-10-06 13:30:14
【问题描述】:
我想转换这个简单的代码:
void setZComp(Imath::V3f& pt)
{
pt.z = 0.0;
}
int myfunc()
{
...
std::vector<Imath::V3f> vec(5,Imath::V3f(1.0,1.0,1.0));
std::for_each(vec.begin(),vec.end(),boost::bind(&setZComp,_1));
...
}
类似的东西,为了不在外面声明 setZComp 而是某种内联声明
int myfunc()
{
...
boost::function<double(Imath::V3f&)> f = (boost::lambda::_1 ->* &Imath::V3f::z = 0.0) ;
std::for_each(vec.begin(),vec.end(),boost::bind(&f,_1));
...
}
我对 Boost Bind 和 Lambda 还是很陌生,我不知道这是否可以通过某种方式完成。显然上面的代码不起作用。
【问题讨论】:
-
让我放弃使用 boost::lambda 的原因之一是很难像您尝试做的那样访问成员。
-
您应该知道,随着最近发布的Boost.Phoenix,Boost.Lambda 现已正式弃用。使用 Phoenix 代替新代码。 :-]
标签: c++ boost boost-function boost-lambda