blob: c019d9ef5836bda75993cb68f8d8748ba6a61b0c [file] [log] [blame]
// PR c++/66919
// { dg-do compile { target c++14 } }
template <int>
struct A {
template <typename F, typename R, typename T>
static auto run (F fn, R, T) { auto r = fn (); } // { dg-error "" }
};
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); }; // { dg-error "25:declared void" }
}
struct B {
typedef int G;
typedef int H;
};
struct M : F <C> {
M () {}
};