[net.lang.c++] bug

bs@alice.UucP (Bjarne Stroustrup) (05/24/86)

cit-vax.Caltech.Edu (Jonathan P. Leech)
>
>    The following code:
> 
> 	int spam() {
> 	    double (*z)[4] = (double (*)[4])0;
> 	}
> 
>     is legal C code. It is not legal C++ code (release 1.0),
> generating the following error message:
> 
>     "junk.c", line 2: error:  z is undefined
> 
>     Declarations of this form seem not to cause any problem in member
> functions of classes (the only other context in which I had occasion
> to use them in C++ until tonight). This is a most annoying bug. Any
> help in fixes or workarounds would greatly appreciated.

Yes that is a nasty cfront bug. Sorry. The code is legal C++ but I have
persistent problems convincing YACC about that.

Fortunately the workaround is simple:

	int spam() {
 	    auto double (*z)[4] = (double (*)[4])0;
	}

In general, if you get funny error messages in connection with pointer to
function declarations use a storage class specifier to help YACC.