0
새로운 parallel_for 다음 코드에 TBB 및 C++의 람다와 가진 컴파일러 에러 :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 I. 다음과 같은 오류가 발생합니다.
In lambda function:
... error: invalid type argument
... error: invalid type argument
둘 다 Stepper :: step의 입력 인수를 참조합니다. 람다와 잘 어울리지 않는 템플릿 기반의 상속에 대해 뭔가있는 것 같습니까?
이 물건을 다루는 데 도움이된다면 크게 감사하겠습니다. 감사합니다
'Stepper :: step()'의 서명은 무엇입니까? –
전체'GroupStepper :: step' 함수를'void step() {Stepper :: step (objs_ [0], h_); }'? –
lambda에 대한 지원은 GCC 4.5에서 새롭다.이 코드를 파싱 할 때 버그가 있다면 놀랄 일이 아니다. 위의 주석에서 제안을 시도하고'this-> Stepper :: step (...) '을 호출 해 볼 수도 있습니다. –