람다를 파라미터로 받기
일반
일반적으로 람다를 파라미터로 받는 경우 template
구문을 사용 합니다.
template<typename T>
void foo(T fn)
{
cout << fn(3) << endl;
}
void main()
{
auto fn = [](int a)
{
return a*a;
}
foo(fn);
}
이렇게 하라고 합니다. 그런데 이 구문에는 함정이 있습니다. 만일 다음 코드는 어떻게 해야 할까요?
template<typename T>
void foo(T fn)
{
cout << fn(3) << endl;
}
void bar()
{
auto fn = [](int a)
{
return a*a;
}
foo(fn);
}
void main()
{
bar();
}