OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.dg/] [template/] [dependent-expr5.C] - Blame information for rev 154

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 149 jeremybenn
// { dg-do compile }
2
 
3
// Copyright 2005 Free Software Foundation
4
// contributed by Alexandre Oliva 
5
// inspired in the failure reported in Red Hat bugzilla #168260.
6
 
7
template void bind(F f) {}
8
 
9
template void bindm(F f) {}
10
template void bindm(F (T::*f)(void)) {} // { dg-error "note" }
11
 
12
template void bindn(F f) {}
13
template void bindn(F (*f)(T)) {}
14
 
15
template void bindb(F f) {}
16
template void bindb(F (*f)(T)) {} // { dg-error "note" }
17
template void bindb(F (T::*f)(void)) {} // { dg-error "note" }
18
 
19
struct foo {
20
  static int baist;
21
  int bait;
22
  void barf ();
23
  static void barf (int);
24
 
25
  struct bar {
26
    static int baikst;
27
    int baikt;
28
    void bark ();
29
    static void bark (int);
30
 
31
    bar() {
32
      bind (&baist);
33
      bind (&foo::baist);
34
      bind (&bait); // { dg-error "nonstatic data member" }
35
      bind (&foo::bait);
36
 
37
      bind (&baikst);
38
      bind (&bar::baikst);
39
      bind (&baikt); // ok, this->baikt
40
      bind (&bar::baikt);
41
 
42
      bind (&barf); // { dg-error "no matching function" }
43
      bind (&foo::barf); // { dg-error "no matching function" }
44
 
45
      bindm (&barf); // { dg-error "no matching function" }
46
      bindm (&foo::barf);
47
 
48
      bindn (&barf);
49
      bindn (&foo::barf);
50
 
51
      bindb (&barf);
52
      bindb (&foo::barf); // { dg-error "ambiguous" }
53
 
54
      bind (&bark); // { dg-error "no matching function" }
55
      bind (&bar::bark); // { dg-error "no matching function" }
56
 
57
      bindm (&bark); // { dg-error "no matching function" }
58
      bindm (&bar::bark);
59
 
60
      bindn (&bark);
61
      bindn (&bar::bark);
62
 
63
      bindb (&bark);
64
      bindb (&bar::bark); // { dg-error "ambiguous" }
65
    }
66
  };
67
 
68
  template 
69
  struct barT {
70
    static int baikst;
71
    int baikt;
72
    void bark ();
73
    static void bark (int);
74
 
75
    barT() {
76
      bind (&baist);
77
      bind (&foo::baist);
78
      bind (&bait); // { dg-error "nonstatic data member" }
79
      bind (&foo::bait);
80
 
81
      bind (&baikst);
82
      bind (&barT::baikst);
83
      bind (&baikt); // ok, this->baikt
84
      bind (&barT::baikt);
85
 
86
      bind (&barf); // { dg-error "no matching function" }
87
      bind (&foo::barf); // { dg-error "no matching function" }
88
 
89
      bindm (&barf); // { dg-error "no matching function" }
90
      bindm (&foo::barf);
91
 
92
      bindn (&barf);
93
      bindn (&foo::barf);
94
 
95
      bindb (&barf);
96
      bindb (&foo::barf); // { dg-error "ambiguous" }
97
 
98
      bind (&bark); // { dg-error "no matching function" }
99
      bind (&barT::bark); // { dg-error "no matching function" }
100
 
101
      bindm (&bark); // { dg-error "no matching function" }
102
      bindm (&barT::bark);
103
 
104
      bindn (&bark);
105
      bindn (&barT::bark);
106
 
107
      bindb (&bark);
108
      bindb (&barT::bark); // { dg-error "ambiguous" }
109
    }
110
  };
111
 
112
  bar bard;
113
  barT bart;
114
} bad;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.