https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30952
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed|2009-06-03 22:19:39 |2021-8-11
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
There are actually two different issues, one dealing with -fpermissive and the
other dealing with function pointers.
Take:
void (*sub) (int * x, void ** y);
void s (int * x, void ** y);
void call (int a, int * b)
{
s(a, b);
sub(a, b);
}
We produce:
<source>: In function 'void call(int, int*)':
<source>:5:5: error: invalid conversion from 'int' to 'int*' [-fpermissive]
5 | s(a, b);
| ^
| |
| int
<source>:5:8: error: cannot convert 'int*' to 'void**'
5 | s(a, b);
| ^
| |
| int*
<source>:2:26: note: initializing argument 2 of 'void s(int*, void**)'
2 | void s (int * x, void ** y);
| ~~~~~~~~^
<source>:6:7: error: invalid conversion from 'int' to 'int*' [-fpermissive]
6 | sub(a, b);
| ^
| |
| int
<source>:6:10: error: cannot convert 'int*' to 'void**' in argument passing
6 | sub(a, b);
| ^
| |
| int*
Notice how only the second argument for s gets the note "initializing argument"
while the first does not.
sub gets neither.