// PR c++/83958 // { dg-do compile { target c++11 } } // { dg-options "" } template struct A; class B; template > class C; template struct D; template struct E { using X = W; X operator* (); T operator++ (); template bool operator!= (E); }; template struct F { class G; using H = D; using I = E; class G : public I {}; G begin (); G end (); }; template struct C : F { using J = F; using J::begin; using J::end; }; using K = class L; struct M { void foo () { for (auto & [ a ] : m) {} } // { dg-error "incomplete type" } C m; // { dg-warning "only available with" "" { target c++14_down } .-1 } };