حمیدرضا مداح
حمیدرضا مداح
خواندن ۱ دقیقه·۲ سال پیش

استفاده از lambda به عنوان functor

int main()
{
foo modifier;
int val_to_be_modify = 0; modifier.modify([](int i){return i+1}, val_to_be_modify);
std::cout << "modified value: " << val_to_be_modify;
}

در این مثال اولین پارامتر ورودی متد modify یک لامبدا است.

خروجی:

modified value: 1

class foo
{
public:
template<typename T>
int modify(T t, int val)
{
return t(val);
}
}

بجای استفاده از lambda می توان کد زیر را استفاده کرد

class functor_t
{
public:
int operator()(int val)
{
return val+1;
}
}
int main()
{
foo modifier;
int val_to_be_modify = 0;
functor_t functor;
modifier.modify(functor, val_to_be_modify);
std::cout << "modified value: " << val_to_be_modify;
}
clambdafunctor
شاید از این پست‌ها خوشتان بیاید