내가 컴파일 gcc가 작동 VS 2010 년 내 코드를 컴파일하려고를 gcc를 반대로,하지만 난 람다 식에 이상한 오류가 발생합니다 :람다 표현식은
이std::function<double (size_t level, size_t q)> doLevel = [&](size_t level, size_t q)
{ //line 52
double thisLevelP = density(q, data[level]);
if(level==T-1) return thisLevelP;
if(level==t-1) return thisLevelP*A(q,state)*doLevel(level+1,state);
double continuation = 0.0;
for(size_t i=0; i<Q; ++i)
{
continuation += A(q, i)*doLevel(level+1, i);
}
return thisLevelP*continuation;
};
오류가 :
Error 1 error C2086: 'size_t &_T' : redefinition c:\users\ga1009\documents\phd\cpp\pmi\cpp\test\baumiterationtest.cpp 52
Error 2 error C2661: '`anonymous-namespace'::`anonymous-namespace'::<lambda1>::<lambda1>' : no overloaded function takes 8 arguments c:\users\ga1009\documents\phd\cpp\pmi\cpp\test\baumiterationtest.cpp 52
무엇이 잘못 되었나요?
그건 그렇고, 당신은 어떤 UB가 있습니다. 이 경우 람다의 반환 형식을 명시 적으로 지정해야합니다. – chris
SSCCE는 어떻습니까? –
어떤 라인이 어떤 라인입니까? 그것을 나타냅니다. 게시 된 코드에'size_t & _T '가 표시되지 않습니다. – Nawaz