https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96944
Bug ID: 96944
Summary: call of overloaded is ambiguous
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: tangyixuan at mail dot dlut.edu.cn
Target Milestone: ---
The following code is rejected by g++. clang++ compiles it successfully.
$ cat s.cpp
template < int I > int F( char [I]);
template < int I > int F( char a = I );
int b = F<0>(0);
$ g++ -c s.cpp
s.cpp:3:15: error: call of overloaded ‘F<0>(int)’ is ambiguous
3 | int b = F<0>(0);
| ^
s.cpp:1:24: note: candidate: ‘int F(char*) [with int I = 0]’
1 | template < int I > int F( char [I]);
| ^
s.cpp:2:24: note: candidate: ‘int F(char) [with int I = 0]’
2 | template < int I > int F( char a = I );
|