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