#include <iostream>
#include <cstring>
#include <cstddef>
const size_t CHONK_SIZE = 1000000;
template<typename T>
class chonk
{
public:
chonk() : pc(new T[CHONK_SIZE]) {}
chonk(const chonk& rhs)
: pc(new T[CHONK_SIZE])
{
memcpy(pc, rhs.pc, CHONK_SIZE*sizeof(T));
}
chonk& operator=(const chonk& rhs)
{
delete[] pc;
pc = new T[CHONK_SIZE];
memcpy(pc, rhs.pc, CHONK_SIZE*sizeof(T));
return *this;
}
~chonk() { delete[] pc; }
private:
T* pc;
};
int main()
{
chonk<int> ci;
chonk<float> cf;
chonk<float> cg { cf };
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNzdGRkZWY+Cgpjb25zdCBzaXplX3QgQ0hPTktfU0laRSA9IDEwMDAwMDA7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjbGFzcyBjaG9uawp7CnB1YmxpYzoKICAgIGNob25rKCkgOiBwYyhuZXcgVFtDSE9OS19TSVpFXSkge30KCiAgICBjaG9uayhjb25zdCBjaG9uayYgcmhzKQogICAgICAgICAgICA6IHBjKG5ldyBUW0NIT05LX1NJWkVdKQogICAgICAgICAgICB7CgkJbWVtY3B5KHBjLCByaHMucGMsIENIT05LX1NJWkUqc2l6ZW9mKFQpKTsKCSAgICB9CgogICAgY2hvbmsmIG9wZXJhdG9yPShjb25zdCBjaG9uayYgcmhzKQogICAgICAgICAgICB7CgkJZGVsZXRlW10gcGM7CgkJcGMgPSBuZXcgVFtDSE9OS19TSVpFXTsKCQltZW1jcHkocGMsIHJocy5wYywgQ0hPTktfU0laRSpzaXplb2YoVCkpOwoJCXJldHVybiAqdGhpczsKCSAgICB9CgogICAgfmNob25rKCkgeyBkZWxldGVbXSBwYzsgfQoKcHJpdmF0ZToKICAgIFQqIHBjOwp9OwoKaW50IG1haW4oKQp7CiAgICBjaG9uazxpbnQ+IGNpOwogICAgY2hvbms8ZmxvYXQ+IGNmOwogICAgY2hvbms8ZmxvYXQ+IGNnIHsgY2YgfTsKfQo=