c ++在lambda函数中 - 错误:tbb :: parallel_for中的无效类型参数

时间:2013-01-15 21:32:09

标签: c++ gcc c++11 lambda

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不相符的东西吗?

任何帮助处理这些东西的人都会非常感激。感谢

1 个答案:

答案 0 :(得分:0)

我认为lambda介绍人(又名捕获子句)是不正确的。通过使用“[this]”,我不太明白你要表达的是什么。有关正确的语法,请查看以下文章:http://msdn.microsoft.com/en-us/library/dd293603.aspx 希望这可以帮助! :)