Let's play a game of guessing! What can you tell about the following function?
char* vector_advance(char* val);
Should return values be deallocated by the programmer or not? Does the function attempt to deallocate the input parameter? Should the input parameter be zero-terminated, or should the function assume that the input parameter has a specified width?
Now, let's make the task harder! Take a look at the following line:
char ( &vector_advance( char (&val)[4] ) )[4];
Do not worry. I've also been scratching my head for half an hour before getting an idea of what is happening here. vector_advance is a function that accepts and returns an array of four elements. Is there a way to write such a function clearly?