0

C++ の tbb とラムダが新しく、次のコードでコンパイラ エラーが発生しました。

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 への入力引数を参照しています。テンプレート化された継承について、ラムダでうまく機能しない何かがあると思いますか?

このようなことを処理するための助けをいただければ幸いです。ありがとう

4

1 に答える 1