#include <memory>
#include <iostream>
template <typename T>
void printArr(T const &arr)
{
std::cout << typeid(T).name() << "\t";
for (int x = 0; x < 2; ++x)
for (int y = 0; y < 2; ++y)
for (int z = 0; z < 2; ++z)
std::cout << arr[x][y][z] << " ";
std::cout << std::endl;
}
int main()
{
int(&arr)[2][2][2] = reinterpret_cast<int(&)[2][2][2]>(*new int[2][2][2]{ { { 1,2 },{ 3,4 } }, { { 5,6 },{ 7,8 } } });
printArr(arr);
delete[] &arr;
int(*arr2)[2][2] = new int[2][2][2]{ { { 1,2 },{ 3,4 } },{ { 5,6 },{ 7,8 } } };
printArr(arr2);
delete[] arr2;
std::unique_ptr<int[][2][2]> arr3(new int[2][2][2]{ { { 1,2 },{ 3,4 } },{ { 5,6 },{ 7,8 } } });
printArr(arr3);
std::unique_ptr<int[][2][2]> arr4 = std::make_unique<int[][2][2]>(2);
printArr(arr4);
return 0;
}
I2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgcHJpbnRBcnIoVCBjb25zdCAmYXJyKQp7CglzdGQ6OmNvdXQgPDwgdHlwZWlkKFQpLm5hbWUoKSA8PCAiXHQiOwoJZm9yIChpbnQgeCA9IDA7IHggPCAyOyArK3gpCgkJZm9yIChpbnQgeSA9IDA7IHkgPCAyOyArK3kpCgkJCWZvciAoaW50IHogPSAwOyB6IDwgMjsgKyt6KQoJCQkJc3RkOjpjb3V0IDw8IGFyclt4XVt5XVt6XSA8PCAiICI7CglzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwp9CgoKaW50IG1haW4oKQp7CglpbnQoJmFycilbMl1bMl1bMl0gPSByZWludGVycHJldF9jYXN0PGludCgmKVsyXVsyXVsyXT4oKm5ldyBpbnRbMl1bMl1bMl17IHsgeyAxLDIgfSx7IDMsNCB9IH0sIHsgeyA1LDYgfSx7IDcsOCB9IH0gfSk7CglwcmludEFycihhcnIpOwoJZGVsZXRlW10gJmFycjsKCglpbnQoKmFycjIpWzJdWzJdID0gbmV3IGludFsyXVsyXVsyXXsgeyB7IDEsMiB9LHsgMyw0IH0gfSx7IHsgNSw2IH0seyA3LDggfSB9IH07CglwcmludEFycihhcnIyKTsKCWRlbGV0ZVtdIGFycjI7CgoJc3RkOjp1bmlxdWVfcHRyPGludFtdWzJdWzJdPiBhcnIzKG5ldyBpbnRbMl1bMl1bMl17IHsgeyAxLDIgfSx7IDMsNCB9IH0seyB7IDUsNiB9LHsgNyw4IH0gfSB9KTsKCXByaW50QXJyKGFycjMpOwoKCXN0ZDo6dW5pcXVlX3B0cjxpbnRbXVsyXVsyXT4gYXJyNCA9IHN0ZDo6bWFrZV91bmlxdWU8aW50W11bMl1bMl0+KDIpOwoJcHJpbnRBcnIoYXJyNCk7CgoJcmV0dXJuIDA7Cn0=