"Tomás Ó hÉilidhe" <toe@lavabit.comwrites:
Quote:
I posted an article of similar effect to this to comp.std.c++ but for some
reason it hasn't shown up in the newsgroup.
>
Anyway, instead of having a system in C++ whereby each integer type has a
minimum range (e.g. int must be at least 16-Bit), would it not be a hell of
a lot better if we could define objects as follows:
>
uint_fast24_t i;
>
, where 24 can be replaced with whatever range you need. I think it would
be trivial for a compiler to iterate thru all the integer types it provides
to pick the most appropriate one.
>
Or perhaps another method could be:
>
int {0,65535} i; /* 0 and 65535 specify the min and max */
>
(although personally I prefer the former way of doing it)
>
This would lead to portable algorithms that run faster.
Instead of creating new syntax I'd use a template-like syntax, ie:
#v+
uint_fast<24i;
int<0, 65535j;
#v-
The later may be achieved with templates though (probably something
better could be invented but as a proof of concept):
#v+
template<unsigned bitsstruct uint {
typedef typename uint<bits + 1>::type type;
};
template<struct uint< 8{ typedef unsigned char type; }
template<struct uint<16{ typedef unsigned short type; }
template<struct uint<32{ typedef unsigned int type; }
uint<24>::type i;
#v-
Not that I believe something like that will be ever implemented even
though it may be handy.
--
Best regards, _ _
.o. | Liege of Serenly Enlightened Majesty of o' \,=./ `o
..o | Computer Science, Michal "mina86" Nazarewicz (o o)
ooo +--<mina86*tlen.pl>--<jid:mina86*jabber.org>--ooO--(_)--Ooo--