view gcc/testsuite/g++.dg/cpp1z/decomp35.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
line wrap: on
line source

// 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 }
};