https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91212
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Known to work| |7.4.0 Keywords| |wrong-code Last reconfirmed| |2020-01-28 CC| |jason at gcc dot gnu.org, | |marxin at gcc dot gnu.org Ever confirmed|0 |1 Summary|const ignored for ctor |[8/9/10 Regression] const |arguments within return |ignored for ctor arguments | |within return since | |r8-2493-g4ce8c5dea53d8073 Known to fail| |10.0, 8.3.0, 9.2.0 --- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> --- Confirmed, started with r8-2493-g4ce8c5dea53d8073. Slightly modified test-case: $ cat pr91212.cc extern "C" { long write( int fd, const void *buf, unsigned long count ); } struct X { template <unsigned long N> X(const char (&src)[N]) { __builtin_printf ("X(const char (&src)[N])\n"); } template <unsigned long N> X(char (&src)[N]) { __builtin_printf("X(char (&src)[N])\n"); } }; X func1() { char buf[2048]; return buf; } X func2() { char buf[4096]; return X(buf); } int main() { char buf[1024]; __builtin_printf("1: "); X a( buf ); __builtin_printf("2: "); X b( "x" ); __builtin_printf("3: "); X c = func1(); __builtin_printf("4: "); X d = func2(); }