[Bug c++/77563] [5/6/7 Regression] explicit constructor breaks narrowing conversion overload resolution
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 13 09:35:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77563
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org,
| |jason at gcc dot gnu.org
Target Milestone|--- |5.5
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The 4.5 -> 4.6 difference appeared in r159332:
./cc1plus.159325 -quiet -std=c++0x pr77563.C
pr77563.C: In function ‘int main()’:
pr77563.C:12:7: error: conversion from ‘long int’ to ‘A’ is ambiguous
pr77563.C:3:3: note: candidates are: A::A(unsigned int)
pr77563.C:2:3: note: A::A(int)
./cc1plus.159332 -quiet -std=c++0x pr77563.C
pr77563.C: In function ‘int main()’:
pr77563.C:12:7: error: converting to ‘A’ from initializer list would use
explicit constructor ‘A::A(long int)’
then r229283 started to ICE on it instead, and finally r236395 fixed the ICE,
but emitted a note without corresponding error/warning:
./cc1plus.236395 -quiet -std=c++0x pr77563.C
pr77563.C: In function ‘int main()’:
pr77563.C:8:6: note: initializing argument 1 of ‘void f(A)’
void f(A) { }
^
More information about the Gcc-bugs
mailing list