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不相符的东西吗?
任何帮助处理这些东西的人都会非常感激。感谢
答案 0 :(得分:0)
我认为lambda介绍人(又名捕获子句)是不正确的。通过使用“[this]”,我不太明白你要表达的是什么。有关正确的语法,请查看以下文章:http://msdn.microsoft.com/en-us/library/dd293603.aspx 希望这可以帮助! :)