1 // PR c++/65340
2 // { dg-do compile { target c++14 } }
3 
4 template <typename Type> Type constant;
5 namespace reflect {
6 namespace functors {
7   struct recurse { auto operator()(, ); }; // { dg-error "expected" }
8 }
9   auto &recurse = constant < functors :: recurse > ;
10 }
11 namespace functors {
12 struct traverse {
13   template <typename Algo, typename Value>
14   auto operator()(Algo, Value) -> decltype(reflect
15                                            :: recurse(0, 0)); // { dg-error "use of" }
16 };
17 }
18 auto &traverse = constant < functors :: traverse > ;
19 operator()()->decltype(traverse(0, 0)) // { dg-error "no match|expected" }
20