@@ -57,6 +57,18 @@ version (StdDdoc)
5757 */
5858 alias cpp_ulong = c_ulong;
5959
60+ /* **
61+ * Used for a signed integer type that corresponds in size and mangling to the associated
62+ * C++ compiler's `long long` type.
63+ */
64+ alias cpp_longlong = long ;
65+
66+ /* **
67+ * Used for an unsigned integer type that corresponds in size and mangling to the associated
68+ * C++ compiler's `unsigned long long` type.
69+ */
70+ alias cpp_ulonglong = ulong ;
71+
6072 /* **
6173 * Used for a floating point type that corresponds in size and mangling to the associated
6274 * C++ compiler's `long double` type.
@@ -97,6 +109,9 @@ version( Windows )
97109
98110 alias int c_long;
99111 alias uint c_ulong;
112+
113+ alias long cpp_longlong;
114+ alias ulong cpp_ulonglong;
100115}
101116else version ( Posix )
102117{
@@ -105,11 +120,17 @@ else version( Posix )
105120 enum __c_long : long ;
106121 enum __c_ulong : ulong ;
107122
123+ enum __c_longlong : long ;
124+ enum __c_ulonglong : ulong ;
125+
108126 alias __c_long cpp_long;
109127 alias __c_ulong cpp_ulong;
110128
111129 alias long c_long;
112130 alias ulong c_ulong;
131+
132+ alias __c_longlong cpp_longlong;
133+ alias __c_ulonglong cpp_ulonglong;
113134 }
114135 else
115136 {
@@ -121,6 +142,9 @@ else version( Posix )
121142
122143 alias int c_long;
123144 alias uint c_ulong;
145+
146+ alias long cpp_longlong;
147+ alias ulong cpp_ulonglong;
124148 }
125149}
126150
@@ -177,7 +201,10 @@ static assert(is(c_long_double), "c_long_double needs to be declared for this pl
177201version (Darwin)
178202{
179203 alias cpp_size_t = cpp_ulong;
180- alias cpp_ptrdiff_t = cpp_long;
204+ version (D_LP64 )
205+ alias cpp_ptrdiff_t = cpp_long;
206+ else
207+ alias cpp_ptrdiff_t = ptrdiff_t ;
181208}
182209else
183210{
0 commit comments