[Bug c++/95659] New: Inconsistent error message in "default argument missing for parameter"
haoxintu at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Jun 12 17:32:46 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95659
Bug ID: 95659
Summary: Inconsistent error message in "default argument
missing for parameter"
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: haoxintu at gmail dot com
Target Milestone: ---
$cat bug.cc
int a;
long foo1 ( void = a, double param2 ,decltype (auto) param3 = a){ }
long foo2 ( void = a, double param2){ }
In gcc-trunk
$g++-trunk -w -c -std=c++14 bug.cc
bug.cc:2:41: error: cannot declare a parameter with ‘decltype(auto)’
2 | long foo1 ( void = a, double param2 ,decltype (auto) param3 = a){ }
| ^~~~~~~~~~~~~~~
bug.cc:2:14: error: invalid use of type ‘void’ in parameter declaration
2 | long foo1 ( void = a, double param2 ,decltype (auto) param3 = a){ }
| ^~~~~~~~~
bug.cc:3:14: error: invalid use of type ‘void’ in parameter declaration
3 | long foo2 ( void = a, double param2){ }
| ^~~~~~~~~
bug.cc:3:33: error: default argument missing for parameter 2 of ‘long int
foo2(<type error>, double)’
3 | long foo2 ( void = a, double param2){ }
| ~~~~~~~~^~~~~~
bug.cc:3:14: note: ...following parameter 1 which has a default argument
3 | long foo2 ( void = a, double param2){ }
| ^~~~~~~~~
GCC-trunk misses the "default argument missing for parameter" error message in
function "foo1()" but gives the message in function "foo2()".
In other GCC versions, they have consitent results, for example in GCC-10
$g++-10 -w -c -std=c++14 bug.cc
bug.cc:2:41: error: cannot declare a parameter with ‘decltype(auto)’
2 | long foo1 ( void = a, double param2 ,decltype (auto) param3 = a){ }
| ^~~~~~~~~~~~~~~
bug.cc:2:14: error: invalid use of type ‘void’ in parameter declaration
2 | long foo1 ( void = a, double param2 ,decltype (auto) param3 = a){ }
| ^~~~~~~~~
bug.cc:2:33: error: default argument missing for parameter 2 of ‘long int
foo1(<type error>, double)’
2 | long foo1 ( void = a, double param2 ,decltype (auto) param3 = a){ }
| ~~~~~~~~^~~~~~
bug.cc:2:14: note: ...following parameter 1 which has a default argument
2 | long foo1 ( void = a, double param2 ,decltype (auto) param3 = a){ }
| ^~~~~~~~~
bug.cc:3:14: error: invalid use of type ‘void’ in parameter declaration
3 | long foo2 ( void = a, double param2){ }
| ^~~~~~~~~
bug.cc:3:33: error: default argument missing for parameter 2 of ‘long int
foo2(<type error>, double)’
3 | long foo2 ( void = a, double param2){ }
| ~~~~~~~~^~~~~~
bug.cc:3:14: note: ...following parameter 1 which has a default argument
3 | long foo2 ( void = a, double param2){ }
| ^~~~~~~~~
More information about the Gcc-bugs
mailing list