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