// RUN: %clang_cc1 -std=c++14 -fsyntax-only -verify %s

template <class> auto fn0 = [] {};
template <typename> void foo0() { fn0<char>(); }

template<typename T> auto fn1 = [](auto a) { return a + T(1); };
template<typename T> auto v1 = [](int a = T(1)) { return a; }();

struct S {
  template<class T>
  static constexpr T t = [](int f = T(7)){return f;}(); // expected-error{{constexpr variable 't<int>' must be initialized by a constant expression}} expected-note{{cannot be used in a constant expression}}
};

template <typename X>
int foo2() {
  X a = 0x61;
  fn1<char>(a);
  (void)v1<int>;
  (void)S::t<int>; // expected-note{{in instantiation of static data member 'S::t<int>' requested here}}
  return 0;
}

template<class C>
int foo3() {
  C::m1(); // expected-error{{type 'long long' cannot be used prior to '::' because it has no members}}
  return 1;
}

template<class C>
auto v2 = [](int a = foo3<C>()){};  // expected-note{{in instantiation of function template specialization 'foo3<long long>' requested here}}

int main() {
  v2<long long>();  // This line causes foo3<long long> to be instantiated.
  v2<long long>(2); // This line does not.
  foo2<int>();
}
