저는 C ++ 11을 처음 사용합니다. 다음 재귀 람다 함수를 작성하고 있지만 컴파일하지는 않습니다.
sum.cpp
#include <iostream>
#include <functional>
auto term = [](int a)->int {
return a*a;
};
auto next = [](int a)->int {
return ++a;
};
auto sum = [term,next,&sum](int a, int b)mutable ->int {
if(a>b)
return 0;
else
return term(a) + sum(next(a),b);
};
int main(){
std::cout<<sum(1,10)<<std::endl;
return 0;
}
컴파일 오류 :
vimal @ linux-718q : ~ / 연구 / 09C ++ / c ++ 0x / lambda> g ++ -std = c ++ 0x sum.cpp
sum.cpp : 람다 함수에서 : sum.cpp : 18 : 36 : 오류 : ' ((<lambda(int, int)>*)this)-><lambda(int, int)>::sum
'를 함수로 사용할 수 없습니다
gcc 버전
gcc 버전 4.5.0 20091231 (실험) (GCC)
그러나 sum()
아래와 같이 선언을 변경하면 작동합니다.
std::function<int(int,int)> sum = [term,next,&sum](int a, int b)->int {
if(a>b)
return 0;
else
return term(a) + sum(next(a),b);
};
누군가 이것에 빛을 던져 주시겠습니까?
mutable
키워드 는 무엇입니까 ?
std::function<int(int,int)> sum = [&](int a, int b) {