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