#include <iostream>
#include <functional>
#include <vector>
using namespace std;
class Base{
public:
int i;
const function<int()> getValue;
Base(int i, int j):getValue([=](){ return j; }){
this->i = i;
}
};
int main() {
const int N = 5;
vector<Base*> bases;
for(int i=0; i<5; i++){
bases.emplace_back(new Base(i, i*i));
}
for(Base* base: bases){
cout << base->getValue() << endl;
//cout << base->getValue.beta << endl;//NG//‘int GetValue::beta’ is private within this context
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBCYXNlewpwdWJsaWM6CglpbnQgaTsKCWNvbnN0IGZ1bmN0aW9uPGludCgpPiBnZXRWYWx1ZTsKCQoJQmFzZShpbnQgaSwgaW50IGopOmdldFZhbHVlKFs9XSgpeyByZXR1cm4gajsgfSl7CgkJdGhpcy0+aSA9IGk7Cgl9Cn07CgppbnQgbWFpbigpIHsKCWNvbnN0IGludCBOID0gNTsKCXZlY3RvcjxCYXNlKj4gYmFzZXM7CgkKCWZvcihpbnQgaT0wOyBpPDU7IGkrKyl7CgkJYmFzZXMuZW1wbGFjZV9iYWNrKG5ldyBCYXNlKGksIGkqaSkpOwoJfQoJZm9yKEJhc2UqIGJhc2U6IGJhc2VzKXsKCQljb3V0IDw8IGJhc2UtPmdldFZhbHVlKCkgPDwgZW5kbDsKCQkvL2NvdXQgPDwgYmFzZS0+Z2V0VmFsdWUuYmV0YSA8PCBlbmRsOy8vTkcvL+KAmGludCBHZXRWYWx1ZTo6YmV0YeKAmSBpcyBwcml2YXRlIHdpdGhpbiB0aGlzIGNvbnRleHQKCX0KCXJldHVybiAwOwp9