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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.dg/] [ext/] [has_virtual_destructor.C] - Blame information for rev 693

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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