When CLang 14 was released I noticed that following code doesn't compile anymore (but works in CLang 13):
int main() { using T = _ExtInt(256); }
This code was used to create fixed size integers of arbitrary bit length, even of unusual bit sizes like _ExtInt(12345)
. And everything worked for any bit size.
In CLang 14 you can use only 128 bits:
int main() { using T = _ExtInt(128); }
Above code works in both CLang 13 and 14, but says _ExtInt()
is deprecated and suggest to use _BitInt(128)
instead.
Of course there exists unsigned __int128
, but _ExtInt()/_BitInt() can be used to create any bit size including prime numbers like _ExtInt(97)/_BitInt(97)
(online).
I have two questions:
Is there any chance in CLang 14 to have (natively) integers bigger than 128 bits? Of course external libraries like Boost can provide them. But what about native support? As CLang 13 natively supported any weird bit size like
_ExtInt(12345)
.Is
_BitInt(x)
exactly same as_ExtInt(x)
in CLang 14 for anyx
?