[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / lldb / test / Shell / Settings / Inputs / names.cpp
blobcf6982abb8f354640411700f1d0d66db27731d66
1 namespace detail {
2 template <typename T> struct Quux {};
3 } // namespace detail
5 using FuncPtr = detail::Quux<double> (*(*)(int))(float);
7 struct Foo {
8 template <typename T> void foo(T arg) const noexcept(true) {}
10 template <int T> void operator<<(int) {}
12 template <typename T> FuncPtr returns_func_ptr(detail::Quux<int> &&) const noexcept(false) { return nullptr; }
15 namespace ns {
16 template <typename T> int foo(char const *str) noexcept(false) { return 0; }
17 template <typename T> int foo(T t) { return 1; }
19 template <typename T> FuncPtr returns_func_ptr(detail::Quux<int> &&) { return nullptr; }
20 } // namespace ns
22 int bar() { return 1; }
24 namespace {
25 int anon_bar() { return 1; }
26 auto anon_lambda = [] {};
27 } // namespace
29 int main() {
30 ns::foo<decltype(bar)>(bar);
31 ns::foo<decltype(bar)>("bar");
32 ns::foo(anon_lambda);
33 ns::foo(anon_bar);
34 ns::foo<decltype(&Foo::foo<int(int)>)>("method");
35 ns::returns_func_ptr<int>(detail::Quux<int>{});
36 Foo f;
37 f.foo(anon_bar);
38 f.operator<< <(2 > 1)>(0);
39 f.returns_func_ptr<int>(detail::Quux<int>{});
41 return 0;