#include <cstddef>
#include <iostream>
using namespace std;
template<size_t N, size_t M>
void printPtr( int(&A)[M][N]) {
for(int i=0; i < M; i++){
for(int j=0; j<N; j++) {
cout << A[i][j] << " ";
}
cout << endl;
}
}
int main() {
int A[][3] = {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 },
{ 10, 11, 12 }
};
int(*ptrA)[4][3] = &A; // Not a decayed type
printPtr(*ptrA);
printPtr(A);
}
I2luY2x1ZGUgPGNzdGRkZWY+CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHNpemVfdCBOLCBzaXplX3QgTT4Kdm9pZCBwcmludFB0ciggaW50KCZBKVtNXVtOXSkgewogICBmb3IoaW50IGk9MDsgaSA8IE07IGkrKyl7CiAgICAgICAgZm9yKGludCBqPTA7IGo8TjsgaisrKSB7CiAgICAgICAgICAgIGNvdXQgPDwgQVtpXVtqXSA8PCAiICI7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KfQoKaW50IG1haW4oKSB7CgogICAgaW50IEFbXVszXSA9IHsKCQkJeyAxLCAyLCAzIH0sCgkJCXsgNCwgNSwgNiB9LAoJCQl7IDcsIDgsIDkgfSwKCQkJeyAxMCwgMTEsIDEyIH0KCX07CiAgICAKCWludCgqcHRyQSlbNF1bM10gPSAmQTsgLy8gTm90IGEgZGVjYXllZCB0eXBlCglwcmludFB0cigqcHRyQSk7CglwcmludFB0cihBKTsKfQ==