http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58986
Bug ID: 58986 Summary: [C++11] Narrowing for initializer lists must be an error Product: gcc Version: 4.8.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: thomas.br...@virtuell-zuhause.de Compiling ######### struct B { B(int, double) {} }; void g(B) {}; int main(int argc, char** argv) { g( {'a', 'b'} ); // OK: g(B(int,double)) user-defined conversion g( {1.0, 1.0} ); // error: narrowing } ######### with LANG=C g++ -std=c++11 gcc-bug-narrowing.cpp with g++ 4.8.2 compiles fine with the warning: ######### gcc-bug-narrowing.cpp: In function 'int main(int, char**)': gcc-bug-narrowing.cpp:9:17: warning: narrowing conversion of '1.0e+0' from 'double' to 'int' inside { } [-Wnarrowing] g( {1.0, 1.0} ); // error: narrowing ######### Although C++11 standard ยง13.3.3.1.5 3 states that narrowing for initializer lists is an error.