#include <iostream>
#include <functional>
#include <vector>
using namespace std;
class Base{
private:
int i;
public:
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBCYXNlewpwcml2YXRlOgoJaW50IGk7CnB1YmxpYzoKCWNvbnN0IGZ1bmN0aW9uPGludCgpPiBnZXRWYWx1ZTsKCUJhc2UoaW50IGksIGludCBqKTpnZXRWYWx1ZShbPV0oKXsgcmV0dXJuIGo7IH0pewoJCXRoaXMtPmkgPSBpOwoJfQp9OwoKaW50IG1haW4oKSB7Cgljb25zdCBpbnQgTiA9IDU7Cgl2ZWN0b3I8QmFzZSo+IGJhc2VzOwoJCglmb3IoaW50IGk9MDsgaTw1OyBpKyspewoJCWJhc2VzLmVtcGxhY2VfYmFjayhuZXcgQmFzZShpLCBpKmkpKTsKCX0KCWZvcihCYXNlKiBiYXNlOiBiYXNlcyl7CgkJY291dCA8PCBiYXNlLT5nZXRWYWx1ZSgpIDw8IGVuZGw7CgkJLy9jb3V0IDw8IGJhc2UtPmdldFZhbHVlLmJldGEgPDwgZW5kbDsvL05HLy/igJhpbnQgR2V0VmFsdWU6OmJldGHigJkgaXMgcHJpdmF0ZSB3aXRoaW4gdGhpcyBjb250ZXh0Cgl9CglyZXR1cm4gMDsKfQ==