// PR c++/79488
// { dg-do compile { target c++11 } }
int f();
static int g __attribute__((__weakref__("f")));
template <typename Fn> struct res {
  static Fn val();
  using type = decltype(val()()); // { dg-error "no match for call" }
};
template <typename Fn> struct A {
  template <typename T> void set_result(T) {}
  virtual void run() {
    auto boundfn = []() -> typename res<Fn>::type{};
    set_result(boundfn);
  }
};
struct F {
  void operator()() &;
};
A<F> t;