// RUN: %clang_cc1 -std=c++2a -emit-pch %s -o %t // RUN: %clang_cc1 -std=c++2a -include-pch %t -verify %s // RUN: %clang_cc1 -std=c++2a -emit-pch -fpch-instantiate-templates %s -o %t // RUN: %clang_cc1 -std=c++2a -include-pch %t -verify %s // expected-no-diagnostics #ifndef HEADER #define HEADER auto l1 = []() constexpr -> int { return I; }; auto l2 = []() constexpr -> decltype(I) { return I; }; auto l3 = [](auto i) constexpr -> T { return T(i); }; auto l4 = [] class T, class U>(T, auto i) constexpr -> U { return U(i); }; #else /*included pch*/ static_assert(l1.operator()<5>() == 5); static_assert(l1.operator()<6>() == 6); static_assert(l2.operator()<7>() == 7); static_assert(l2.operator()() == nullptr); static_assert(l3.operator()(8.4) == 8); static_assert(l3.operator()(9.9) == 9); template struct DummyTemplate { }; static_assert(l4(DummyTemplate(), 12) == 12.0); static_assert(l4(DummyTemplate(), 19.8) == 19); #endif // HEADER