From fc40eb7580abd8cf45545908484348314ee43284 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Tue, 18 Aug 2015 17:29:07 -0400 Subject: [PATCH] re PR c++/66919 (C++14 ICE during error reporting) PR c++/66919 * g++.dg/cpp1y/auto-fn27.C: New. From-SVN: r226993 --- gcc/testsuite/g++.dg/cpp1y/auto-fn27.C | 42 ++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp1y/auto-fn27.C diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn27.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn27.C new file mode 100644 index 00000000000..c9291c2b8e4 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn27.C @@ -0,0 +1,42 @@ +// PR c++/66919 +// { dg-do compile { target c++14 } } + +template +struct A { + template + static auto run (F fn, R, T) { auto r = fn (); } // { dg-error "" } +}; +template +auto foo (F fn, T) +{ + A <0>::run (fn, 0, 0); +} +struct B; +struct C { + typedef B D; +}; +struct E { + virtual void bar (const int &); +}; +template +struct F : E { + typedef typename C::D::G G; + void bar (const G &); + typename C::D::H I; +}; +struct J { struct K {}; }; +template +void +F::bar (const G &) +{ + auto s = I; + typedef decltype (s) L; + auto u =[&](L) { auto t = foo (J::K (), 0); }; // { dg-error "" } +} +struct B { + typedef int G; + typedef int H; +}; +struct M : F { + M () {} +}; -- 2.30.2