Why not just use
if you want to return a pointer to the first index of an array, and
if you want to return a pointer to the pointer to the first index of an array.
I guess these would look something like:
Code:
T *foo(){
int x[5];
return(x);
}
T **foo2(){
int x[5];
return(&x);
}
respectively.
I think you are making this all more complicated than it need be.
good luck