Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to reinterpret pointer as dimensioned array reference?

Suppose I have some pointer, which I want to reinterpret as static dimension array reference:

double *p;
double (&r)[4] = ?(p); // some construct?

// clarify
template< size_t N> void function(double (&a)[N]);
...
 double *p;
function(p); // this will not work.
//  I would like to cast p as to make it appear as  double[N]

Is it possible to do so? how do I do it?

like image 511
Anycorn Avatar asked Apr 14 '10 04:04

Anycorn


1 Answers

It's ugly:

double arr[4];
double* d = arr;

double (&a)[4] = *static_cast<double(*)[4]>(static_cast<void*>(d));

Be sure the array type matches what the pointer originally came from.

like image 140
GManNickG Avatar answered Oct 07 '22 04:10

GManNickG