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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.dg/] [ext/] [has_trivial_destructor-1.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
 
4
struct A
5
{
6
  double a;
7
  double b;
8
};
9
 
10
union U
11
{
12
  double a;
13
  double b;
14
};
15
 
16
struct B
17
{
18
  ~B() { }
19
};
20
 
21
struct C
22
: public B { };
23
 
24
struct D
25
: public A { };
26
 
27
template
28
  bool
29
  f()
30
  { return __has_trivial_destructor(T); }
31
 
32
template
33
  class My
34
  {
35
  public:
36
    bool
37
    f()
38
    { return !!__has_trivial_destructor(T); }
39
  };
40
 
41
template
42
  class My2
43
  {
44
  public:
45
    static const bool trait = __has_trivial_destructor(T);
46
  };
47
 
48
template
49
  const bool My2::trait;
50
 
51
template
52
  struct My3_help
53
  { static const bool trait = b; };
54
 
55
template
56
  const bool My3_help::trait;
57
 
58
template
59
  class My3
60
  {
61
  public:
62
    bool
63
    f()
64
    { return My3_help::trait; }
65
  };
66
 
67
#define PTEST(T) (__has_trivial_destructor(T) && f() \
68
                  && My().f() && My2::trait && My3().f())
69
 
70
#define NTEST(T) (!__has_trivial_destructor(T) && !f() \
71
                  && !My().f() && !My2::trait && !My3().f())
72
 
73
int main()
74
{
75
  assert (PTEST (int));
76
  assert (NTEST (int (int)));
77
  assert (NTEST (void));
78
  assert (PTEST (A));
79
  assert (PTEST (U));
80
  assert (NTEST (B));
81
  assert (NTEST (C));
82
  assert (PTEST (D));
83
  assert (PTEST (D[]));
84
 
85
  return 0;
86
}

powered by: WebSVN 2.1.0

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