1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant//                     The LLVM Compiler Infrastructure
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// test <cstdint>
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cstdint>
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <csignal>
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cwctype>
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <climits>
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <type_traits>
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <limits>
18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert>
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main()
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int8_t
23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int8_t)*CHAR_BIT == 8,
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int8_t)*CHAR_BIT == 8");
25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int8_t>::value,
26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int8_t>::value");
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int16_t
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int16_t)*CHAR_BIT == 16,
29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int16_t)*CHAR_BIT == 16");
30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int16_t>::value,
31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int16_t>::value");
32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int32_t
33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int32_t)*CHAR_BIT == 32,
34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int32_t)*CHAR_BIT == 32");
35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int32_t>::value,
36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int32_t>::value");
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int64_t
38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int64_t)*CHAR_BIT == 64,
39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int64_t)*CHAR_BIT == 64");
40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int64_t>::value,
41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int64_t>::value");
42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint8_t
44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint8_t)*CHAR_BIT == 8,
45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint8_t)*CHAR_BIT == 8");
46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint8_t>::value,
47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint8_t>::value");
48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint16_t
49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint16_t)*CHAR_BIT == 16,
50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint16_t)*CHAR_BIT == 16");
51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint16_t>::value,
52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint16_t>::value");
53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint32_t
54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint32_t)*CHAR_BIT == 32,
55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint32_t)*CHAR_BIT == 32");
56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint32_t>::value,
57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint32_t>::value");
58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint64_t
59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint64_t)*CHAR_BIT == 64,
60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint64_t)*CHAR_BIT == 64");
61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint64_t>::value,
62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint64_t>::value");
63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int_least8_t
65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int_least8_t)*CHAR_BIT >= 8,
66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int_least8_t)*CHAR_BIT >= 8");
67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int_least8_t>::value,
68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int_least8_t>::value");
69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int_least16_t
70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int_least16_t)*CHAR_BIT >= 16,
71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int_least16_t)*CHAR_BIT >= 16");
72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int_least16_t>::value,
73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int_least16_t>::value");
74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int_least32_t
75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int_least32_t)*CHAR_BIT >= 32,
76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int_least32_t)*CHAR_BIT >= 32");
77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int_least32_t>::value,
78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int_least32_t>::value");
79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int_least64_t
80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int_least64_t)*CHAR_BIT >= 64,
81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int_least64_t)*CHAR_BIT >= 64");
82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int_least64_t>::value,
83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int_least64_t>::value");
84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint_least8_t
86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint_least8_t)*CHAR_BIT >= 8,
87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint_least8_t)*CHAR_BIT >= 8");
88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint_least8_t>::value,
89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint_least8_t>::value");
90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint_least16_t
91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint_least16_t)*CHAR_BIT >= 16,
92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint_least16_t)*CHAR_BIT >= 16");
93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint_least16_t>::value,
94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint_least16_t>::value");
95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint_least32_t
96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint_least32_t)*CHAR_BIT >= 32,
97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint_least32_t)*CHAR_BIT >= 32");
98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint_least32_t>::value,
99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint_least32_t>::value");
100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint_least64_t
101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint_least64_t)*CHAR_BIT >= 64,
102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint_least64_t)*CHAR_BIT >= 64");
103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint_least64_t>::value,
104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint_least64_t>::value");
105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int_fast8_t
107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int_fast8_t)*CHAR_BIT >= 8,
108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int_fast8_t)*CHAR_BIT >= 8");
109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int_fast8_t>::value,
110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int_fast8_t>::value");
111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int_fast16_t
112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int_fast16_t)*CHAR_BIT >= 16,
113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int_fast16_t)*CHAR_BIT >= 16");
114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int_fast16_t>::value,
115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int_fast16_t>::value");
116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int_fast32_t
117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int_fast32_t)*CHAR_BIT >= 32,
118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int_fast32_t)*CHAR_BIT >= 32");
119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int_fast32_t>::value,
120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int_fast32_t>::value");
121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::int_fast64_t
122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::int_fast64_t)*CHAR_BIT >= 64,
123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::int_fast64_t)*CHAR_BIT >= 64");
124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::int_fast64_t>::value,
125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::int_fast64_t>::value");
126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint_fast8_t
128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint_fast8_t)*CHAR_BIT >= 8,
129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint_fast8_t)*CHAR_BIT >= 8");
130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint_fast8_t>::value,
131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint_fast8_t>::value");
132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint_fast16_t
133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint_fast16_t)*CHAR_BIT >= 16,
134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint_fast16_t)*CHAR_BIT >= 16");
135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint_fast16_t>::value,
136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint_fast16_t>::value");
137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint_fast32_t
138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint_fast32_t)*CHAR_BIT >= 32,
139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint_fast32_t)*CHAR_BIT >= 32");
140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint_fast32_t>::value,
141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint_fast32_t>::value");
142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uint_fast64_t
143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uint_fast64_t)*CHAR_BIT >= 64,
144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uint_fast64_t)*CHAR_BIT >= 64");
145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uint_fast64_t>::value,
146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uint_fast64_t>::value");
147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::intptr_t
149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::intptr_t) >= sizeof(void*),
150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::intptr_t) >= sizeof(void*)");
151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::intptr_t>::value,
152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::intptr_t>::value");
153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uintptr_t
154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uintptr_t) >= sizeof(void*),
155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uintptr_t) >= sizeof(void*)");
156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uintptr_t>::value,
157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uintptr_t>::value");
158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::intmax_t
160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::intmax_t) >= sizeof(long long),
161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::intmax_t) >= sizeof(long long)");
162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<std::intmax_t>::value,
163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<std::intmax_t>::value");
164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef std::uintmax_t
165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(std::uintmax_t) >= sizeof(unsigned long long),
166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(std::uintmax_t) >= sizeof(unsigned long long)");
167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<std::uintmax_t>::value,
168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<std::uintmax_t>::value");
169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTN_MIN
171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT8_MIN == -128, "INT8_MIN == -128");
172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT16_MIN == -32768, "INT16_MIN == -32768");
173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT32_MIN == -2147483648U, "INT32_MIN == -2147483648");
174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT64_MIN == -9223372036854775808ULL, "INT64_MIN == -9223372036854775808LL");
175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTN_MAX
177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT8_MAX == 127, "INT8_MAX == 127");
178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT16_MAX == 32767, "INT16_MAX == 32767");
179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT32_MAX == 2147483647, "INT32_MAX == 2147483647");
180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT64_MAX == 9223372036854775807LL, "INT64_MAX == 9223372036854775807LL");
181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // UINTN_MAX
183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT8_MAX == 255, "UINT8_MAX == 255");
184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT16_MAX == 65535, "UINT16_MAX == 65535");
185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT32_MAX == 4294967295U, "UINT32_MAX == 4294967295");
186bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT64_MAX == 18446744073709551615ULL, "UINT64_MAX == 18446744073709551615ULL");
187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INT_FASTN_MIN
189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST8_MIN <= -128, "INT_FAST8_MIN <= -128");
190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST16_MIN <= -32768, "INT_FAST16_MIN <= -32768");
191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST32_MIN <= -2147483648U, "INT_FAST32_MIN <= -2147483648");
192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST64_MIN <= -9223372036854775808ULL, "INT_FAST64_MIN <= -9223372036854775808LL");
193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INT_FASTN_MAX
195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST8_MAX >= 127, "INT_FAST8_MAX >= 127");
196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST16_MAX >= 32767, "INT_FAST16_MAX >= 32767");
197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST32_MAX >= 2147483647, "INT_FAST32_MAX >= 2147483647");
198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST64_MAX >= 9223372036854775807LL, "INT_FAST64_MAX >= 9223372036854775807LL");
199bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
200bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // UINT_FASTN_MAX
201bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT_FAST8_MAX >= 255, "UINT_FAST8_MAX >= 255");
202bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT_FAST16_MAX >= 65535, "UINT_FAST16_MAX >= 65535");
203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT_FAST32_MAX >= 4294967295U, "UINT_FAST32_MAX >= 4294967295");
204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT_FAST64_MAX >= 18446744073709551615ULL, "UINT_FAST64_MAX >= 18446744073709551615ULL");
205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTPTR_MIN
207bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(INTPTR_MIN == std::numeric_limits<std::intptr_t>::min());
208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTPTR_MAX
210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(INTPTR_MAX == std::numeric_limits<std::intptr_t>::max());
211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // UINTPTR_MAX
213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(UINTPTR_MAX == std::numeric_limits<std::uintptr_t>::max());
214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
215bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTMAX_MIN
216bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(INTMAX_MIN == std::numeric_limits<std::intmax_t>::min());
217bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
218bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTMAX_MAX
219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(INTMAX_MAX == std::numeric_limits<std::intmax_t>::max());
220bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // UINTMAX_MAX
222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(UINTMAX_MAX == std::numeric_limits<std::uintmax_t>::max());
223bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
224bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // PTRDIFF_MIN
225bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(PTRDIFF_MIN == std::numeric_limits<std::ptrdiff_t>::min());
226bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // PTRDIFF_MAX
228bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(PTRDIFF_MAX == std::numeric_limits<std::ptrdiff_t>::max());
229bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
230bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // SIG_ATOMIC_MIN
231bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(SIG_ATOMIC_MIN == std::numeric_limits<std::sig_atomic_t>::min());
232bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
233bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // SIG_ATOMIC_MAX
234bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(SIG_ATOMIC_MAX == std::numeric_limits<std::sig_atomic_t>::max());
235bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
236bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // SIZE_MAX
237bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(SIZE_MAX == std::numeric_limits<std::size_t>::max());
238bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
239bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // WCHAR_MIN
240bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(WCHAR_MIN == std::numeric_limits<wchar_t>::min());
241bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
242bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // WCHAR_MAX
243bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(WCHAR_MAX == std::numeric_limits<wchar_t>::max());
244bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
245bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // WINT_MIN
246bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(WINT_MIN == std::numeric_limits<std::wint_t>::min());
247bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
248bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // WINT_MAX
249bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(WINT_MAX == std::numeric_limits<std::wint_t>::max());
250bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
251bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef INT8_C
252bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error INT8_C not defined
253bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
254bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
255bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef INT16_C
256bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error INT16_C not defined
257bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
258bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
259bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef INT32_C
260bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error INT32_C not defined
261bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
262bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
263bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef INT64_C
264bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error INT64_C not defined
265bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
266bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
267bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef UINT8_C
268bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error UINT8_C not defined
269bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
270bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
271bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef UINT16_C
272bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error UINT16_C not defined
273bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
274bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
275bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef UINT32_C
276bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error UINT32_C not defined
277bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
278bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
279bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef UINT64_C
280bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error UINT64_C not defined
281bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
282bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
283bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef INTMAX_C
284bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error INTMAX_C not defined
285bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
286bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
287bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef UINTMAX_C
288bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error UINTMAX_C not defined
289bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
290bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}
291