Ne.app NeANT
The Ne.app NeANT User module of the NeANT distribution.
18.limits.stdcxx-937.cpp
Go to the documentation of this file.
1
27#include <cassert>
28#include <limits>
29
30int main()
31{
32 // work extra hard to prevent aggressive optimizers from
33 // optimizing the code away on the assumption that no
34 // object has a null address
35 const void* const fmemaddr[] = {
36 &std::numeric_limits<float>::is_specialized,
37 &std::numeric_limits<float>::digits,
38 &std::numeric_limits<float>::digits10,
39
40 &std::numeric_limits<float>::is_signed,
41 &std::numeric_limits<float>::is_integer,
42 &std::numeric_limits<float>::is_exact,
43 &std::numeric_limits<float>:: radix,
44
45 &std::numeric_limits<float>::min_exponent,
46 &std::numeric_limits<float>::min_exponent10,
47 &std::numeric_limits<float>::max_exponent,
48 &std::numeric_limits<float>::max_exponent10,
49
50 &std::numeric_limits<float>::has_infinity,
51 &std::numeric_limits<float>::has_quiet_NaN,
52 &std::numeric_limits<float>::has_signaling_NaN,
53 &std::numeric_limits<float>::has_denorm,
54 &std::numeric_limits<float>::has_denorm_loss,
55
56 &std::numeric_limits<float>::is_iec559,
57 &std::numeric_limits<float>::is_bounded,
58 &std::numeric_limits<float>::is_modulo,
59
60 &std::numeric_limits<float>::traps,
61 &std::numeric_limits<float>::tinyness_before,
62
63 &std::numeric_limits<float>::round_style
64 };
65
66 const void* const memaddr[] = {
67 &std::numeric_limits<double>::is_specialized,
68 &std::numeric_limits<double>::digits,
69 &std::numeric_limits<double>::digits10,
70
71 &std::numeric_limits<double>::is_signed,
72 &std::numeric_limits<double>::is_integer,
73 &std::numeric_limits<double>::is_exact,
74 &std::numeric_limits<double>:: radix,
75
76 &std::numeric_limits<double>::min_exponent,
77 &std::numeric_limits<double>::min_exponent10,
78 &std::numeric_limits<double>::max_exponent,
79 &std::numeric_limits<double>::max_exponent10,
80
81 &std::numeric_limits<double>::has_infinity,
82 &std::numeric_limits<double>::has_quiet_NaN,
83 &std::numeric_limits<double>::has_signaling_NaN,
84 &std::numeric_limits<double>::has_denorm,
85 &std::numeric_limits<double>::has_denorm_loss,
86
87 &std::numeric_limits<double>::is_iec559,
88 &std::numeric_limits<double>::is_bounded,
89 &std::numeric_limits<double>::is_modulo,
90
91 &std::numeric_limits<double>::traps,
92 &std::numeric_limits<double>::tinyness_before,
93
94 &std::numeric_limits<double>::round_style
95 };
96
97 const void* const ldmemaddr[] = {
98 &std::numeric_limits<long double>::is_specialized,
99 &std::numeric_limits<long double>::digits,
100 &std::numeric_limits<long double>::digits10,
101
102 &std::numeric_limits<long double>::is_signed,
103 &std::numeric_limits<long double>::is_integer,
104 &std::numeric_limits<long double>::is_exact,
105 &std::numeric_limits<long double>:: radix,
106
107 &std::numeric_limits<long double>::min_exponent,
108 &std::numeric_limits<long double>::min_exponent10,
109 &std::numeric_limits<long double>::max_exponent,
110 &std::numeric_limits<long double>::max_exponent10,
111
112 &std::numeric_limits<long double>::has_infinity,
113 &std::numeric_limits<long double>::has_quiet_NaN,
114 &std::numeric_limits<long double>::has_signaling_NaN,
115 &std::numeric_limits<long double>::has_denorm,
116 &std::numeric_limits<long double>::has_denorm_loss,
117
118 &std::numeric_limits<long double>::is_iec559,
119 &std::numeric_limits<long double>::is_bounded,
120 &std::numeric_limits<long double>::is_modulo,
121
122 &std::numeric_limits<long double>::traps,
123 &std::numeric_limits<long double>::tinyness_before,
124
125 &std::numeric_limits<long double>::round_style
126 };
127
128 for (unsigned i = 0; i != sizeof memaddr / sizeof *memaddr; ++i) {
129 assert (fmemaddr [i] != 0);
130 assert (memaddr [i] != 0);
131 assert (ldmemaddr [i] != 0);
132 }
133
134 return 0;
135}
#define i
Definition 17.names.cpp:126
int main()
#define assert(expr)
Definition _cassert.h:40