summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice22.C
blob: 6f2650dbe7700337dee882d88f82b232892830b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 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;