#include <iostream>
#include <typeinfo>
using namespace std;
template<typename Lambda>
struct lambda_member : Lambda
{
Lambda& f_;
lambda_member(Lambda& f) : Lambda(f),
f_(f)
{}
auto& get_value1()
{
return f_.__value1;
}
};
int main(){
auto test = [value1 =0]() mutable {value1+=1; return value1;};
lambda_member<decltype(test)> lm{test};
std::cout << test() << std::endl;
std::cout << lm.get_value1() << std::endl;
lm.get_value1() = 22;
std::cout << test() << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKdGVtcGxhdGU8dHlwZW5hbWUgTGFtYmRhPgpzdHJ1Y3QgbGFtYmRhX21lbWJlciA6IExhbWJkYQp7CgkKCUxhbWJkYSYgZl87CglsYW1iZGFfbWVtYmVyKExhbWJkYSYgZikgOiBMYW1iZGEoZiksCgkJZl8oZikKCXt9CgkKCWF1dG8mIGdldF92YWx1ZTEoKQoJewoJCXJldHVybiBmXy5fX3ZhbHVlMTsKCX0KCn07CgoKaW50IG1haW4oKXsKICAgIGF1dG8gdGVzdCA9IFt2YWx1ZTEgPTBdKCkgbXV0YWJsZSB7dmFsdWUxKz0xOyByZXR1cm4gdmFsdWUxO307CiAgICAKICAgIGxhbWJkYV9tZW1iZXI8ZGVjbHR5cGUodGVzdCk+IGxte3Rlc3R9OwogICAgCiAgICBzdGQ6OmNvdXQgPDwgdGVzdCgpIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCBsbS5nZXRfdmFsdWUxKCkgPDwgc3RkOjplbmRsOwogICAgbG0uZ2V0X3ZhbHVlMSgpID0gMjI7CiAgICBzdGQ6OmNvdXQgPDwgdGVzdCgpIDw8IHN0ZDo6ZW5kbDsKICAgIAp9