#include <algorithm>
#include <iostream>
#include <memory>
using namespace std;
struct Integer
{
explicit Integer( int const &value )
: value_( value )
{
}
Integer()
:value_( 0 )
{
}
Integer &operator=( int const &value )
{
cout << value << endl;
value_ = value;
return *this;
}
private:
int value_;
};
template<class _Ty>
struct Array
{
explicit Array( size_t const &size, _Ty const &value )
: size_( size ), elements_( new _Ty[ size ] )
{
for( size_t i = 0; i < size; i++ )
*( elements_ + i ) = value;
}
~Array()
{
if( elements_ )
delete[]elements_;
elements_ = 0;
size_ = 0;
}
private:
_Ty *elements_;
size_t size_;
};
int main()
{
Integer i( 15 );
auto value = std::make_unique< Array<Integer> >( 10, i );
i = 16;
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEludGVnZXIKewoJZXhwbGljaXQgSW50ZWdlciggaW50IGNvbnN0ICZ2YWx1ZSApCgkJOiB2YWx1ZV8oIHZhbHVlICkKCXsKCX0KCUludGVnZXIoKQoJCTp2YWx1ZV8oIDAgKQoJewoJfQoJSW50ZWdlciAmb3BlcmF0b3I9KCBpbnQgY29uc3QgJnZhbHVlICkKCXsKCQljb3V0IDw8IHZhbHVlIDw8IGVuZGw7CgkJdmFsdWVfID0gdmFsdWU7CgkJcmV0dXJuICp0aGlzOwoJfQpwcml2YXRlOgoJaW50IHZhbHVlXzsKfTsKCnRlbXBsYXRlPGNsYXNzIF9UeT4Kc3RydWN0IEFycmF5CnsKCWV4cGxpY2l0IEFycmF5KCBzaXplX3QgY29uc3QgJnNpemUsIF9UeSBjb25zdCAmdmFsdWUgKQoJCTogc2l6ZV8oIHNpemUgKSwgZWxlbWVudHNfKCBuZXcgX1R5WyBzaXplIF0gKQoJewoJCWZvciggc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrICkKCQkJKiggZWxlbWVudHNfICsgaSApID0gdmFsdWU7Cgl9Cgl+QXJyYXkoKQoJewoJCWlmKCBlbGVtZW50c18gKQoJCQlkZWxldGVbXWVsZW1lbnRzXzsKCQllbGVtZW50c18gPSAwOwoJCXNpemVfID0gMDsKCX0KcHJpdmF0ZToKCV9UeSAqZWxlbWVudHNfOwoJc2l6ZV90IHNpemVfOwp9OwoKaW50IG1haW4oKQp7CglJbnRlZ2VyIGkoIDE1ICk7CgoJYXV0byB2YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8IEFycmF5PEludGVnZXI+ID4oIDEwLCBpICk7CgoJaSA9IDE2OwoKCXJldHVybiAwOwp9