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

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [g++.dg/] [ext/] [is_base_of.C] - Blame information for rev 338

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 301 jeremybenn
// { dg-do "run" }
2
#include 
3
 
4
class A1
5
{
6
  double a;
7
  double b;
8
};
9
 
10
class A2
11
{
12
  double a;
13
  double b;
14
};
15
 
16
class B
17
: private A1 { };
18
 
19
class C
20
: private A1, private A2 { };
21
 
22
union U
23
{
24
  double a;
25
  double b;
26
};
27
 
28
template
29
  bool
30
  f()
31
  { return __is_base_of(T, U); }
32
 
33
template
34
  class My
35
  {
36
  public:
37
    bool
38
    f()
39
    { return !!__is_base_of(T, U); }
40
  };
41
 
42
template
43
  class My2
44
  {
45
  public:
46
    static const bool trait = __is_base_of(T, U);
47
  };
48
 
49
template
50
  const bool My2::trait;
51
 
52
template
53
  struct My3_help
54
  { static const bool trait = b; };
55
 
56
template
57
  const bool My3_help::trait;
58
 
59
template
60
  class My3
61
  {
62
  public:
63
    bool
64
    f()
65
    { return My3_help::trait; }
66
  };
67
 
68
#define PTEST(T, U) (__is_base_of(T, U) && f() \
69
                  && My().f() && My2::trait && My3().f())
70
 
71
#define NTEST(T, U) (!__is_base_of(T, U) && !f() \
72
                  && !My().f() && !My2::trait && !My3().f())
73
 
74
int main()
75
{
76
  assert (NTEST (int, A1));
77
  assert (NTEST (A1, void));
78
  assert (PTEST (A1, A1));
79
  assert (NTEST (A1*, A1*));
80
  assert (NTEST (A1&, A1&));
81
  assert (PTEST (A1, B));
82
  assert (NTEST (B, A1));
83
  assert (PTEST (A1, C));
84
  assert (PTEST (A2, C));
85
  assert (NTEST (C, A1));
86
  assert (PTEST (A1, const B));
87
  assert (NTEST (const B, A1));
88
  assert (PTEST (A1, volatile C));
89
  assert (PTEST (volatile A2, const C));
90
  assert (NTEST (const volatile C, A1));
91
  assert (NTEST (U, U));
92
 
93
  return 0;
94
}

powered by: WebSVN 2.1.0

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