c++ 中 tbb 和 lambdas 的新手,并且在以下代码中存在编译器错误:
template <class ObjT, class Stepper>
class GroupStepper
: public Stepper {
public:
typedef boost::shared_ptr<ObjT> obj_ptr;
void step () {
tbb::parallel_for (blocked_range<int> (0, objs_.size ()),
[this] (const blocked_range<int>& r) {
for (int i=r.begin (), e=r.end (); i<e; ++i) {
Stepper::step (objs_[i], h_);
}
});
};
private:
std::vector<obj_ptr>& objs_;
scalar h_;
};
使用 gcc v. 4.5.1 编译时出现以下错误:
In lambda function:
... error: invalid type argument
... error: invalid type argument
两者都指的是 Stepper::step 的输入参数。我猜这个模板继承有些东西不能很好地与 lambda 配合使用?
任何帮助处理这些东西都将不胜感激。谢谢