1*d23ef9efSSirraide // RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s 2*d23ef9efSSirraide // expected-no-diagnostics 3*d23ef9efSSirraide 4*d23ef9efSSirraide // Check that we don't crash due to forgetting to check for placeholders 5*d23ef9efSSirraide // in the RHS of '.*'. 6*d23ef9efSSirraide 7*d23ef9efSSirraide template <typename Fn> has_explicitly_named_overload()8*d23ef9efSSirraidestatic bool has_explicitly_named_overload() { 9*d23ef9efSSirraide return requires { Fn().*&Fn::operator(); }; 10*d23ef9efSSirraide } 11*d23ef9efSSirraide main()12*d23ef9efSSirraideint main() { 13*d23ef9efSSirraide has_explicitly_named_overload<decltype([](auto){})>(); 14*d23ef9efSSirraide } 15*d23ef9efSSirraide 16*d23ef9efSSirraide template <typename Fn> has_explicitly_named_overload_2()17*d23ef9efSSirraideconstexpr bool has_explicitly_named_overload_2() { 18*d23ef9efSSirraide return requires { Fn().*&Fn::operator(); }; 19*d23ef9efSSirraide } 20*d23ef9efSSirraide __anon8cd60c130202(auto)21*d23ef9efSSirraidestatic_assert(!has_explicitly_named_overload_2<decltype([](auto){})>()); 22