annotate gcc/testsuite/g++.dg/template/dependent-expr5.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 // { dg-do compile }
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 // Copyright 2005 Free Software Foundation
kono
parents:
diff changeset
4 // contributed by Alexandre Oliva <aoliva@redhat.com>
kono
parents:
diff changeset
5 // inspired in the failure reported in Red Hat bugzilla #168260.
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 template<class F> void bind(F f) {} // { dg-message "note" }
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 template<class F> void bindm(F f) {} // { dg-message "note" }
kono
parents:
diff changeset
10 template<class F, class T> void bindm(F (T::*f)(void)) {} // { dg-message "note" }
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 template<class F> void bindn(F f) {}
kono
parents:
diff changeset
13 template<class F, class T> void bindn(F (*f)(T)) {}
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 template<class F> void bindb(F f) {}
kono
parents:
diff changeset
16 template<class F, class T> void bindb(F (*f)(T)) {} // { dg-message "note" }
kono
parents:
diff changeset
17 template<class F, class T> void bindb(F (T::*f)(void)) {} // { dg-message "note" }
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 struct foo {
kono
parents:
diff changeset
20 static int baist;
kono
parents:
diff changeset
21 int bait; // { dg-message "" }
kono
parents:
diff changeset
22 void barf ();
kono
parents:
diff changeset
23 static void barf (int);
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 struct bar {
kono
parents:
diff changeset
26 static int baikst;
kono
parents:
diff changeset
27 int baikt;
kono
parents:
diff changeset
28 void bark ();
kono
parents:
diff changeset
29 static void bark (int);
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 bar() {
kono
parents:
diff changeset
32 bind (&baist);
kono
parents:
diff changeset
33 bind (&foo::baist);
kono
parents:
diff changeset
34 bind (&bait); // { dg-error "non-static data member" }
kono
parents:
diff changeset
35 bind (&foo::bait);
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 bind (&baikst);
kono
parents:
diff changeset
38 bind (&bar::baikst);
kono
parents:
diff changeset
39 bind (&baikt); // ok, this->baikt
kono
parents:
diff changeset
40 bind (&bar::baikt);
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 bind (&barf); // { dg-error "no matching function" }
kono
parents:
diff changeset
43 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
44 bind (&foo::barf); // { dg-error "no matching function" }
kono
parents:
diff changeset
45 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 bindm (&barf); // { dg-error "no matching function" }
kono
parents:
diff changeset
48 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
49 bindm (&foo::barf);
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 bindn (&barf);
kono
parents:
diff changeset
52 bindn (&foo::barf);
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 bindb (&barf);
kono
parents:
diff changeset
55 bindb (&foo::barf); // { dg-error "ambiguous" }
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58 bind (&bark); // { dg-error "no matching function" }
kono
parents:
diff changeset
59 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
60 bind (&bar::bark); // { dg-error "no matching function" }
kono
parents:
diff changeset
61 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 bindm (&bark); // { dg-error "no matching function" }
kono
parents:
diff changeset
64 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
65 bindm (&bar::bark);
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 bindn (&bark);
kono
parents:
diff changeset
68 bindn (&bar::bark);
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 bindb (&bark);
kono
parents:
diff changeset
71 bindb (&bar::bark); // { dg-error "ambiguous" }
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 }
kono
parents:
diff changeset
74 };
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76 template <typename T>
kono
parents:
diff changeset
77 struct barT {
kono
parents:
diff changeset
78 static int baikst;
kono
parents:
diff changeset
79 int baikt;
kono
parents:
diff changeset
80 void bark ();
kono
parents:
diff changeset
81 static void bark (int);
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 barT() {
kono
parents:
diff changeset
84 bind (&baist);
kono
parents:
diff changeset
85 bind (&foo::baist);
kono
parents:
diff changeset
86 bind (&bait); // { dg-error "non-static data member" }
kono
parents:
diff changeset
87 bind (&foo::bait);
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 bind (&baikst);
kono
parents:
diff changeset
90 bind (&barT::baikst);
kono
parents:
diff changeset
91 bind (&baikt); // ok, this->baikt
kono
parents:
diff changeset
92 bind (&barT::baikt);
kono
parents:
diff changeset
93
kono
parents:
diff changeset
94 bind (&barf); // { dg-error "no matching function" }
kono
parents:
diff changeset
95 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
96 bind (&foo::barf); // { dg-error "no matching function" }
kono
parents:
diff changeset
97 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 bindm (&barf); // { dg-error "no matching function" }
kono
parents:
diff changeset
100 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
101 bindm (&foo::barf);
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 bindn (&barf);
kono
parents:
diff changeset
104 bindn (&foo::barf);
kono
parents:
diff changeset
105
kono
parents:
diff changeset
106 bindb (&barf);
kono
parents:
diff changeset
107 bindb (&foo::barf); // { dg-error "ambiguous" }
kono
parents:
diff changeset
108
kono
parents:
diff changeset
109
kono
parents:
diff changeset
110 bind (&bark); // { dg-error "no matching function" }
kono
parents:
diff changeset
111 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
112 bind (&barT::bark); // { dg-error "no matching function" }
kono
parents:
diff changeset
113 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
114
kono
parents:
diff changeset
115 bindm (&bark); // { dg-error "no matching function" }
kono
parents:
diff changeset
116 // { dg-message "(candidate|deduce template parameter)" "candidate note" { target *-*-* } .-1 }
kono
parents:
diff changeset
117 bindm (&barT::bark);
kono
parents:
diff changeset
118
kono
parents:
diff changeset
119 bindn (&bark);
kono
parents:
diff changeset
120 bindn (&barT::bark);
kono
parents:
diff changeset
121
kono
parents:
diff changeset
122 bindb (&bark);
kono
parents:
diff changeset
123 bindb (&barT::bark); // { dg-error "ambiguous" }
kono
parents:
diff changeset
124
kono
parents:
diff changeset
125 }
kono
parents:
diff changeset
126 };
kono
parents:
diff changeset
127
kono
parents:
diff changeset
128 bar bard;
kono
parents:
diff changeset
129 barT<void> bart;
kono
parents:
diff changeset
130 } bad;