struct A
{
char *buf;
A(int size) : buf(new char[size]) {}
~A() { delete [] buf; }
};
template <typename T, int val> struct with_arg : T
{
with_arg() : T(val) {}
};
int main()
{
A *a = new with_arg <A, 10> [10];
delete [] a;
return 0;
}
c3RydWN0IEEKewogIGNoYXIgKmJ1ZjsKICBBKGludCBzaXplKSA6IGJ1ZihuZXcgY2hhcltzaXplXSkge30KICB+QSgpIHsgZGVsZXRlIFtdIGJ1ZjsgfQp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGludCB2YWw+IHN0cnVjdCB3aXRoX2FyZyA6IFQKewogIHdpdGhfYXJnKCkgOiBUKHZhbCkge30KfTsKCmludCBtYWluKCkKewogIEEgKmEgPSBuZXcgd2l0aF9hcmcgPEEsIDEwPiBbMTBdOwogIGRlbGV0ZSBbXSBhOwogIHJldHVybiAwOwp9