#include <iostream>
template <unsigned long size>
struct BigObject
{
unsigned long array[size * size];
BigObject<size - 1> object;
};
template <>
struct BigObject<0>
{
unsigned long array[1];
};
BigObject<900>& recurse(BigObject<900>& object1, unsigned long n)
{
if (n == 0)
{
return object1;
}
BigObject<900> object;
return recurse(object, n);
}
int main(int argc, char const *argv[])
{
BigObject<900> object;
recurse(object, 20);
std::cout << sizeof(object) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHVuc2lnbmVkIGxvbmcgc2l6ZT4Kc3RydWN0IEJpZ09iamVjdAp7Cgl1bnNpZ25lZCBsb25nIGFycmF5W3NpemUgKiBzaXplXTsKCUJpZ09iamVjdDxzaXplIC0gMT4gb2JqZWN0Owp9OwoKCnRlbXBsYXRlIDw+CnN0cnVjdCBCaWdPYmplY3Q8MD4KewoJdW5zaWduZWQgbG9uZyBhcnJheVsxXTsJCn07CgpCaWdPYmplY3Q8OTAwPiYgcmVjdXJzZShCaWdPYmplY3Q8OTAwPiYgb2JqZWN0MSwgdW5zaWduZWQgbG9uZyBuKQp7CglpZiAobiA9PSAwKQoJewoJCXJldHVybiBvYmplY3QxOwoJfQoKCUJpZ09iamVjdDw5MDA+IG9iamVjdDsKCglyZXR1cm4gcmVjdXJzZShvYmplY3QsIG4pOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciBjb25zdCAqYXJndltdKQp7CglCaWdPYmplY3Q8OTAwPiBvYmplY3Q7CglyZWN1cnNlKG9iamVjdCwgMjApOwoKCXN0ZDo6Y291dCA8PCBzaXplb2Yob2JqZWN0KSA8PCBzdGQ6OmVuZGw7CglyZXR1cm4gMDsKfQ==