#include <iostream>
#include <functional>
std::function<int(int)> makeLambda1(int x) {
return [x] (int y) { return x * y; };
}
auto makeLambda2(int x) {
return [x] (int y) { return x * y; };
}
auto makeLambda3() {
return [] (int y) { return 10 * y; };
}
int main() {
auto lambda1 = makeLambda1(10);
auto lambda2 = makeLambda2(10);
auto lambda3 = makeLambda3();
std::cout << sizeof(lambda1) << " ";
std::cout << sizeof(lambda2) << " ";
std::cout << sizeof(lambda3) << " ";
std::cout << sizeof(int(*)(int)) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KCnN0ZDo6ZnVuY3Rpb248aW50KGludCk+IG1ha2VMYW1iZGExKGludCB4KSB7CiAgcmV0dXJuIFt4XSAoaW50IHkpIHsgcmV0dXJuIHggKiB5OyB9Owp9CgphdXRvIG1ha2VMYW1iZGEyKGludCB4KSB7CiAgcmV0dXJuIFt4XSAoaW50IHkpIHsgcmV0dXJuIHggKiB5OyB9Owp9CgphdXRvIG1ha2VMYW1iZGEzKCkgewogIHJldHVybiBbXSAoaW50IHkpIHsgcmV0dXJuIDEwICogeTsgfTsKfQoKaW50IG1haW4oKSB7CiAgYXV0byBsYW1iZGExID0gbWFrZUxhbWJkYTEoMTApOwogIGF1dG8gbGFtYmRhMiA9IG1ha2VMYW1iZGEyKDEwKTsKICBhdXRvIGxhbWJkYTMgPSBtYWtlTGFtYmRhMygpOwogIHN0ZDo6Y291dCA8PCBzaXplb2YobGFtYmRhMSkgPDwgIiAiOwogIHN0ZDo6Y291dCA8PCBzaXplb2YobGFtYmRhMikgPDwgIiAiOwogIHN0ZDo6Y291dCA8PCBzaXplb2YobGFtYmRhMykgPDwgIiAiOwogIHN0ZDo6Y291dCA8PCBzaXplb2YoaW50KCopKGludCkpIDw8IHN0ZDo6ZW5kbDsKfQo=