I have a function that takes in an array of pointers to images that will not be modified, defined as:

```
void processImg( const Image *myImgs[NUM_IMAGES] );

```

I'd like to pass in a non-`const` type. I would expect to need to do this, but it is illegal (VS2010 says not allowed):

```
Image *imgsToProcess[NUM_IMAGES];
// ...fill in imgsToProcess

processImg( const_cast<Image*[NUM_IMAGES]>(imgsToProcess) );

```

I also tried:

```
processImg( const_cast<Image*[]>(imgsToProcess) ); //'const_cast' : cannot convert from 'Image *[3]' to 'Image *[]'
processImg( const_cast<Image**>(imgsToProcess) ); //'processImg' : cannot convert parameter 1 from 'Image **' to 'const Image *[]'

```

So then I changed the function and array definitions and did:

```
void processImg( const Image **myImgs, int numImages );
...
Image **imgsToProcess;
// ...fill in imgsToProcess

processImg( const_cast<Image**>(imgsToProcess), NUM_IMAGES );

```

To my surprise I still got this error message:

```
'processImg' : cannot convert parameter 1 from 'Image **' to 'const Image **'

```

What am I doing wrong, and is it possible to have a definition like my first one with `const Image *myImgs[NUM_IMAGES]` to accomplish this?