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