1 // PR c++/88419
2 // { dg-do compile { target c++17 } }
3 
4 template<class> struct ref_view {
5   template<class T> ref_view(T&&);
6 };
7 
8 template<class R> ref_view(R&) -> ref_view<R>;
9 
10 struct ref_fn {
11   template<class R> auto operator()(R r) const
12     noexcept(noexcept(ref_view{r}));
13 };
14 
15 template<class R> struct indirect_view {
16   indirect_view(R);
17 };
18 
19 struct indirect_fn {
20   template<class R> auto operator()(R r) const
21     noexcept(noexcept(indirect_view{r}));
22 };
23