- #include <cstdint> 
- #include <cstdlib> 
- #include <iostream> 
-   
-   
- template<typename T, size_t N> 
- T (&makeArray())[N] { 
- 	void* rv = malloc(sizeof(T) * N); 
- 	return *reinterpret_cast<T(*)[N]>(rv); 
- } 
-   
- template<size_t NNew, typename T, size_t NOld> 
- T (&changeArraySize(T (&arr)[NOld]))[NNew] { 
- 	void* rv = realloc(arr, sizeof(T) * NNew); 
- 	return *reinterpret_cast<T(*)[NNew]>(rv); 
- } 
-   
-   
- int main() { 
- 	uint8_t (&arr)[100] = makeArray<uint8_t, 100>(); 
- 	std::cout << sizeof(arr) << std::endl; 
-   
- 	uint8_t (&newArr)[150] = changeArraySize<150>(arr); 
- 	std::cout << sizeof(newArr) << std::endl; 
- } 
				I2luY2x1ZGUgPGNzdGRpbnQ+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8aW9zdHJlYW0+CgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+ClQgKCZtYWtlQXJyYXkoKSlbTl0gewoJdm9pZCogcnYgPSBtYWxsb2Moc2l6ZW9mKFQpICogTik7CglyZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VCgqKVtOXT4ocnYpOwp9Cgp0ZW1wbGF0ZTxzaXplX3QgTk5ldywgdHlwZW5hbWUgVCwgc2l6ZV90IE5PbGQ+ClQgKCZjaGFuZ2VBcnJheVNpemUoVCAoJmFycilbTk9sZF0pKVtOTmV3XSB7Cgl2b2lkKiBydiA9IHJlYWxsb2MoYXJyLCBzaXplb2YoVCkgKiBOTmV3KTsKCXJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxUKCopW05OZXddPihydik7Cn0KCgppbnQgbWFpbigpIHsKCXVpbnQ4X3QgKCZhcnIpWzEwMF0gPSBtYWtlQXJyYXk8dWludDhfdCwgMTAwPigpOwoJc3RkOjpjb3V0IDw8IHNpemVvZihhcnIpIDw8IHN0ZDo6ZW5kbDsKCQoJdWludDhfdCAoJm5ld0FycilbMTUwXSA9IGNoYW5nZUFycmF5U2l6ZTwxNTA+KGFycik7CglzdGQ6OmNvdXQgPDwgc2l6ZW9mKG5ld0FycikgPDwgc3RkOjplbmRsOwp9