// RUN: %clang_cc1 -std=c++1z -verify %s

struct A { int x, y; };
typedef int B[2];
struct C { template<int> int get(); };
struct D { int x, y, z; };
struct E { int *p, n; };

namespace std {
  using size_t = decltype(sizeof(0));
  template<typename> struct tuple_size;
  template<size_t, typename> struct tuple_element { using type = int; };
}

template<> struct std::tuple_size<C> { enum { value = 2 }; };

template<typename T> int decomp(T &t) { 
  auto &[a, b] = t; // expected-error {{type 'D' decomposes into 3 elements, but only 2 names were provided}}
  return a + b; // expected-error {{cannot initialize return object of type 'int' with an rvalue of type 'int *'}}
}

void test() {
  A a;
  B b;
  C c;
  D d;
  E e;
  decomp(a);
  decomp(b);
  decomp(c);
  decomp(d); // expected-note {{in instantiation of}}
  decomp(e); // expected-note {{in instantiation of}}
}
