#include <iostream>
#include <memory>
using namespace std;
template<class T> class MyArray{
T database[10];
public: T& get(int index){return database[index];}
void set(int index, T t){
database[index]=t;
}
};
template<class T> class MyArray<std::unique_ptr<T>>{
T* database[10];
public: T*& get(int index){return database[index];}
void set(int index, std::unique_ptr<T> t){
T* tmp=t.release();
database[index]=tmp;
}
};
class B{};
int main() {
MyArray<B> test1;
MyArray<B*> test2;
MyArray<std::unique_ptr<B>> test3;
test3.set(2,std::make_unique<B>());
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogICAgIAogICAgIAp0ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBNeUFycmF5ewogICAgVCBkYXRhYmFzZVsxMF07CiAgICBwdWJsaWM6IFQmIGdldChpbnQgaW5kZXgpe3JldHVybiBkYXRhYmFzZVtpbmRleF07fQogICAgdm9pZCBzZXQoaW50IGluZGV4LCBUIHQpewogICAgICAgIGRhdGFiYXNlW2luZGV4XT10OwogICAgfQp9Owp0ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBNeUFycmF5PHN0ZDo6dW5pcXVlX3B0cjxUPj57CiAgICBUKiBkYXRhYmFzZVsxMF07CiAgICBwdWJsaWM6IFQqJiBnZXQoaW50IGluZGV4KXtyZXR1cm4gZGF0YWJhc2VbaW5kZXhdO30KICAgIHZvaWQgc2V0KGludCBpbmRleCwgc3RkOjp1bmlxdWVfcHRyPFQ+IHQpewogICAgICAgIFQqIHRtcD10LnJlbGVhc2UoKTsKICAgICAgICBkYXRhYmFzZVtpbmRleF09dG1wOyAgCiAgICB9Cn07CmNsYXNzIEJ7fTsKaW50IG1haW4oKSB7CiAgICBNeUFycmF5PEI+ICAgdGVzdDE7CiAgICBNeUFycmF5PEIqPiAgdGVzdDI7CiAgICBNeUFycmF5PHN0ZDo6dW5pcXVlX3B0cjxCPj4gdGVzdDM7CiAgICB0ZXN0My5zZXQoMixzdGQ6Om1ha2VfdW5pcXVlPEI+KCkpOwogICAgcmV0dXJuIDA7Cn0=