की तरह कुछ आप std::function
उपयोग कर सकते हैं सोचा, उदाहरण के लिए यह void
समारोह है मान लेते हैं और हो जाता है दो int
:
class Bot
{
private:
using Lambda = std::function<void(int, int) >;
Lambda lambda;
public:
Bot(const Lambda &l) : lambda(l)
{
}
void update()
{
//dosomething...;
lambda(1, 2);
}
};
int main()
{
Bot bot ([](int x, int y){ cout << x+y << endl; });
bot.update();
}
अधिक सामान्य:
template <typename L>
class Bot
{
private:
L lambda;
public:
Bot(const L &l) : lambda(l)
{
}
void update()
{
//dosomething...;
lambda(1, 2);
}
};
int main()
{
Bot<std::function<void(int,int)>> bot (
[](int x, int y){ cout << x+y << endl; }
);
bot.update();
}
खाका आधारित:
template <typename L>
struct Bot
{
private:
L lambda;
public:
Bot(const L &l) : lambda{l} {}
void update() { lambda(1,2); }
};
int main()
{
auto l = [](int x, int y){ std::cout << x + y << std::endl; };
Bot<decltype(l)> bot(l);
bot.update();
}
BTW, यह वर्तनी "लैम्ब्डा" का उपयोग कर सकते :) – StilesCrisis
हर लैम्ब्डा अभिव्यक्ति के लिए एक अनूठा प्रकार है, तो मैं यह संभव है नहीं लगता। 'ऑटो एक्स = [] {} पर विचार करें; ऑटो वाई = [] {}; std :: is_same {} // झूठी पैदावार '। –
dyp
@StilesCrisis आह, धन्यवाद :) शुरुआती दिनों में मैंने सोचा था कि इसे लिखा जाएगा lambada – user2796729