template <int> struct A { template <typename F, typename R, typename T> static auto run (F fn, R, T) { auto r = fn (); } }; template <typename F, typename T> 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 <typename C> struct F : E { typedef typename C::D::G G; void bar (const G &); typename C::D::H I; }; struct J { struct K {}; }; template <typename T> void F<T>::bar (const G &) { auto s = I; typedef decltype (s) L; auto u =[&](L) { auto t = foo (J::K (), 0); }; } struct B { typedef int G; typedef int H; }; struct M : F <C> { M () {} }; ICEs with -std=c++1y starting with r211188 and it got fixed (or went latent) on the trunk with r222150.
Author: jason Date: Mon Aug 17 21:34:50 2015 New Revision: 226955 URL: https://gcc.gnu.org/viewcvs?rev=226955&root=gcc&view=rev Log: PR c++/66919 * pt.c (tsubst_copy): Pass complain to mark_used, check return value. Added: branches/gcc-5-branch/gcc/testsuite/g++.dg/cpp1y/auto-fn27.C Modified: branches/gcc-5-branch/gcc/cp/ChangeLog branches/gcc-5-branch/gcc/cp/pt.c
Author: jason Date: Tue Aug 18 21:29:07 2015 New Revision: 226993 URL: https://gcc.gnu.org/viewcvs?rev=226993&root=gcc&view=rev Log: PR c++/66919 * g++.dg/cpp1y/auto-fn27.C: New. Added: trunk/gcc/testsuite/g++.dg/cpp1y/auto-fn27.C
Fixed then.