> $ cat test.cc > #include <cstddef> > #include <initializer_list> > struct S { > template<std::size_t N> S(char const (&)[N]); > }; > struct T { S s; }; > void f(std::initializer_list<T>); > void g() { f({{""}}); } > $ g++ -std=c++11 -fsyntax-only test.cc > test.cc: In function ‘void g()’: > test.cc:8:20: error: could not convert ‘(const char*)""’ from ‘const char*’ to ‘S’ > void g() { f({{""}}); } > ^
Author: ppalka Date: Thu Dec 17 04:01:47 2015 New Revision: 231736 URL: https://gcc.gnu.org/viewcvs?rev=231736&root=gcc&view=rev Log: Fix some blockers of PR c++/24666 (arrays decay to pointers too early) gcc/cp/ChangeLog: PR c++/16333 PR c++/41426 PR c++/59878 PR c++/66895 * typeck.c (convert_for_initialization): Don't perform an early decaying conversion if converting to a class type. gcc/testsuite/ChangeLog: PR c++/16333 PR c++/41426 PR c++/59878 PR c++/66895 * g++.dg/conversion/pr16333.C: New test. * g++.dg/conversion/pr41426.C: New test. * g++.dg/conversion/pr59878.C: New test. * g++.dg/conversion/pr66895.C: New test. Added: trunk/gcc/testsuite/g++.dg/conversion/pr16333.C trunk/gcc/testsuite/g++.dg/conversion/pr41426.C trunk/gcc/testsuite/g++.dg/conversion/pr59878.C trunk/gcc/testsuite/g++.dg/conversion/pr66895.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/typeck.c trunk/gcc/testsuite/ChangeLog
Fixed.