annotate gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv10.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // PR c++/69889
kono
parents:
diff changeset
2 // { dg-do compile { target c++11 } }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
3 // { dg-additional-options "-Wno-return-type" }
111
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 template <typename F> struct Tag {
kono
parents:
diff changeset
6 static void fp() { f()(0); }
kono
parents:
diff changeset
7 static F f() {}
kono
parents:
diff changeset
8 };
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 struct Dispatch {
kono
parents:
diff changeset
11 template <typename F> Dispatch(F&&) : f(Tag<F>::fp) {}
kono
parents:
diff changeset
12 void (*f)();
kono
parents:
diff changeset
13 };
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 struct Empty { Empty(Empty&&); };
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 struct Value {
kono
parents:
diff changeset
18 Value();
kono
parents:
diff changeset
19 template <typename U> Value(U);
kono
parents:
diff changeset
20 void call(Dispatch);
kono
parents:
diff changeset
21 Empty e;
kono
parents:
diff changeset
22 };
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 struct EmptyValue {
kono
parents:
diff changeset
25 EmptyValue(EmptyValue&&);
kono
parents:
diff changeset
26 EmptyValue();
kono
parents:
diff changeset
27 };
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 struct User {
kono
parents:
diff changeset
30 User() {
kono
parents:
diff changeset
31 Value().call([](Value) { return EmptyValue(); });
kono
parents:
diff changeset
32 }
kono
parents:
diff changeset
33 };
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 User user;