Topic: I propose that they add the concept of a "bump" to C++.


Author: wm2015email@gmail.com
Date: Sat, 18 Aug 2018 14:24:54 -0700 (PDT)
Raw View
------=_Part_1115_1200327683.1534627494491
Content-Type: multipart/alternative;
 boundary="----=_Part_1116_1785891630.1534627494492"

------=_Part_1116_1785891630.1534627494492
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable


I propose that they add the concept of a "bump" to modern C++.  You want a=
=20
integer type that's treated like a restricted bit width integer... but you=
=20
don't want the complexity of messing around with picking the correct uint=
=20
size and setting up a bit field.. and you don't want the slowness of=20
packing and unpacking bit fields together that the compiler does behind the=
=20
scenes... thus, the concept of a "Bump" integer type:

*    bump<2>  x;   =3D> maps to =3D>   uint8_t:0; uint8_t x : 2;*
*    bump<7>  x;   =3D> maps to =3D>   uint8_t:0; uint8_t x : 7;*
*    bump<18> x;  =3D> maps to =3D>   uint16_t:0; uint16_t x : 18;  *
*    bump<35> x;  =3D> maps to =3D>   uint32_t:0; uint32_t x : 35;  *
*    bump<66> x;  =3D> maps to =3D>   uin64_t:0; uint64_t x : 66;*

uint8_t:0 <=3D ensures that bit field starts over in a new integer word eac=
h=20
time rather than packing them in the same integer...=20

I means serious... c++ already support bit field widths of up 64 bits...=20
why not make "bit fields" an officially supported integer type?

Every single time you instantiate a bump it automatically picked the=20
correct integer size and resets the bit field back to starting at bit=20
zero...  thus you can have a fully unpacked struct of bit fields without=20
worrying about alignment issues...and its just as fast as using an integer=
=20
directly but is restricted in bit width without a mask. =E2=80=A6

*    struct mystruct {*
*        bump<4>   fieldx;*
*        bump<62> fieldy;*
*        bump<22> fieldz; *
*       uint32_t      etcetc;*
*    }*


I could do this now using some messy macros:

    #define bump(T, NAME, WIDTH)   T :0; T NAME : WIDTH;

   struct mystruct {
       bump(uint8_t,   fieldx, 4);
       bump(uint64_t, fieldy, 62);
       bump(uint32_t, fieldz, 22);
       uint32_t  etcetc;
   }


Further... you could maps a struct implicitly around a bump if not provided=
=20
allowing you to remove a "bump" from the struct and use it directly as a=20
integer variable....
example:

  main() {
      bump<4> x;  // =3D> maps to:   struct x_implicit { uint8_t :0 ix; =20
uint8_t ix : 4}; x_implicit x;
      bump<34> y;  // =3D> maps to:   struct y_implicit { uint64_t :0 iy; =
=20
uint64_t iy : 4}; y_implicit y;

    // and it does modulus math correcly=20
     x =3D 0xF;

     // modulus rollover
     x +=3D 1;
     cout << "x: " << x;
    // prints  0

     x +=3D 1;
     cout << "x: " << x;
    // prints  1
  }

Anyways... just my 2 cents...=20


--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/fbb22a41-e253-4155-b3ce-02b1c97df4a5%40isocpp.or=
g.

------=_Part_1116_1785891630.1534627494492
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><br></div><div>I propose that they add the concept of=
 a &quot;bump&quot; to modern C++.=C2=A0 You want a integer type that&#39;s=
 treated like a restricted bit width integer... but you don&#39;t want the =
complexity of messing around with picking the correct uint size and setting=
 up a bit field.. and you don&#39;t want the slowness of packing and unpack=
ing bit fields together that the compiler does behind the scenes... thus, t=
he concept of a &quot;Bump&quot; integer type:</div><div><br></div><div><b>=
=C2=A0 =C2=A0 bump&lt;2&gt;=C2=A0 x; =C2=A0 =3D&gt; maps to =3D&gt; =C2=A0 =
uint8_t:0; uint8_t x : 2;</b></div><div><div style=3D"margin: 0px; padding:=
 0px; border: 0px rgb(34, 34, 34); border-image: none; text-align: left; co=
lor: rgb(34, 34, 34); text-transform: none; text-indent: 0px; letter-spacin=
g: normal; font-size: 13px; font-style: normal; font-variant: normal; text-=
decoration: none; word-spacing: 0px; white-space: normal; orphans: 2; -webk=
it-text-stroke-width: 0px; background-color: transparent;"><b>=C2=A0 =C2=A0=
 bump&lt;7&gt;=C2=A0 x; =C2=A0 =3D&gt; maps to =3D&gt; =C2=A0 uint8_t:0; ui=
nt8_t x : 7;</b></div><i></i><u></u><sub></sub><sup></sup><strike></strike>=
<div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); borde=
r-image: none; text-align: left; color: rgb(34, 34, 34); text-transform: no=
ne; text-indent: 0px; letter-spacing: normal; font-size: 13px; font-style: =
normal; font-variant: normal; text-decoration: none; word-spacing: 0px; whi=
te-space: normal; orphans: 2; -webkit-text-stroke-width: 0px; background-co=
lor: transparent;"><b>=C2=A0 =C2=A0 bump&lt;18&gt; x;=C2=A0 =3D&gt; maps to=
 =3D&gt; =C2=A0 uint16_t:0; uint16_t x : 18; =C2=A0</b></div><i style=3D"ba=
ckground: none; margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); bor=
der-image: none; height: auto; text-align: left; color: rgb(34, 34, 34); te=
xt-transform: none; text-indent: 0px; letter-spacing: normal; overflow: vis=
ible; font-size: 13px; font-style: italic; font-variant: normal; text-decor=
ation: none; word-spacing: 0px; white-space: normal; overflow-x: visible; o=
verflow-y: visible; min-width: 0px; orphans: 2; -webkit-text-stroke-width: =
0px;"></i><u style=3D"background: none; margin: 0px; padding: 0px; border: =
0px rgb(34, 34, 34); border-image: none; height: auto; text-align: left; co=
lor: rgb(34, 34, 34); text-transform: none; text-indent: 0px; letter-spacin=
g: normal; overflow: visible; font-size: 13px; font-style: normal; font-var=
iant: normal; text-decoration: underline; word-spacing: 0px; white-space: n=
ormal; overflow-x: visible; overflow-y: visible; min-width: 0px; orphans: 2=
; -webkit-text-stroke-width: 0px;"></u><sub style=3D"margin: 0px; padding: =
0px; border: 0px rgb(34, 34, 34); border-image: none; text-align: left; col=
or: rgb(34, 34, 34); text-transform: none; text-indent: 0px; letter-spacing=
: normal; font-size: 9px; font-style: normal; font-variant: normal; text-de=
coration: none; word-spacing: 0px; white-space: normal; orphans: 2; -webkit=
-text-stroke-width: 0px; background-color: transparent;"></sub><sup style=
=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-image: n=
one; text-align: left; color: rgb(34, 34, 34); text-transform: none; text-i=
ndent: 0px; letter-spacing: normal; font-size: 9px; font-style: normal; fon=
t-variant: normal; text-decoration: none; word-spacing: 0px; white-space: n=
ormal; orphans: 2; -webkit-text-stroke-width: 0px; background-color: transp=
arent;"></sup><strike style=3D"margin: 0px; padding: 0px; border: 0px rgb(3=
4, 34, 34); border-image: none; text-align: left; color: rgb(34, 34, 34); t=
ext-transform: none; text-indent: 0px; letter-spacing: normal; font-size: 1=
3px; font-style: normal; font-variant: normal; text-decoration: line-throug=
h; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-stroke-=
width: 0px; background-color: transparent;"></strike><i></i><u></u><sub></s=
ub><sup></sup><strike></strike><div style=3D"margin: 0px; padding: 0px; bor=
der: 0px rgb(34, 34, 34); border-image: none; text-align: left; color: rgb(=
34, 34, 34); text-transform: none; text-indent: 0px; letter-spacing: normal=
; font-size: 13px; font-style: normal; font-variant: normal; text-decoratio=
n: none; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-s=
troke-width: 0px; background-color: transparent;"><b>=C2=A0 =C2=A0 bump&lt;=
35&gt; x;=C2=A0 =3D&gt; maps to =3D&gt; =C2=A0 uint32_t:0; uint32_t x : 35;=
 =C2=A0</b></div><div style=3D"margin: 0px; padding: 0px; border: 0px rgb(3=
4, 34, 34); border-image: none; text-align: left; color: rgb(34, 34, 34); t=
ext-transform: none; text-indent: 0px; letter-spacing: normal; font-size: 1=
3px; font-variant: normal; word-spacing: 0px; white-space: normal; orphans:=
 2; -webkit-text-stroke-width: 0px; background-color: transparent;"><div st=
yle=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-image=
: none; text-align: left; color: rgb(34, 34, 34); text-transform: none; tex=
t-indent: 0px; letter-spacing: normal; font-size: 13px; font-style: normal;=
 font-variant: normal; text-decoration: none; word-spacing: 0px; white-spac=
e: normal; orphans: 2; -webkit-text-stroke-width: 0px; background-color: tr=
ansparent;"><b>=C2=A0 =C2=A0 bump&lt;66&gt; x;=C2=A0 =3D&gt; maps to =3D&gt=
; =C2=A0 uin64_t:0; uint64_t x : 66;</b></div><div style=3D"background-colo=
r: transparent; border-bottom-color: rgb(34, 34, 34); border-bottom-style: =
none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat=
: stretch; border-image-slice: 100%; border-image-source: none; border-imag=
e-width: 1; border-left-color: rgb(34, 34, 34); border-left-style: none; bo=
rder-left-width: 0px; border-right-color: rgb(34, 34, 34); border-right-sty=
le: none; border-right-width: 0px; border-top-color: rgb(34, 34, 34); borde=
r-top-style: none; border-top-width: 0px; color: rgb(34, 34, 34); font-fami=
ly: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; fon=
t-size: 13px; font-style: normal; font-variant: normal; font-weight: 400; l=
etter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: =
0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; p=
adding-right: 0px; padding-top: 0px; text-align: left; text-decoration: non=
e; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; =
white-space: normal; word-spacing: 0px;"><b></b><br></div><div style=3D"bac=
kground-color: transparent; border-bottom-color: rgb(34, 34, 34); border-bo=
ttom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-=
image-repeat: stretch; border-image-slice: 100%; border-image-source: none;=
 border-image-width: 1; border-left-color: rgb(34, 34, 34); border-left-sty=
le: none; border-left-width: 0px; border-right-color: rgb(34, 34, 34); bord=
er-right-style: none; border-right-width: 0px; border-top-color: rgb(34, 34=
, 34); border-top-style: none; border-top-width: 0px; color: rgb(34, 34, 34=
); font-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,san=
s-serif; font-size: 13px; font-style: normal; font-variant: normal; font-we=
ight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; ma=
rgin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-=
left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-dec=
oration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-=
width: 0px; white-space: normal; word-spacing: 0px;">uint8_t:0 &lt;=3D ensu=
res that bit field starts over in a new integer word each time rather than =
packing them in the same integer...=C2=A0</div><div style=3D"background-col=
or: transparent; border-bottom-color: rgb(34, 34, 34); border-bottom-style:=
 none; border-bottom-width: 0px; border-image-outset: 0; border-image-repea=
t: stretch; border-image-slice: 100%; border-image-source: none; border-ima=
ge-width: 1; border-left-color: rgb(34, 34, 34); border-left-style: none; b=
order-left-width: 0px; border-right-color: rgb(34, 34, 34); border-right-st=
yle: none; border-right-width: 0px; border-top-color: rgb(34, 34, 34); bord=
er-top-style: none; border-top-width: 0px; color: rgb(34, 34, 34); font-fam=
ily: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; fo=
nt-size: 13px; font-style: normal; font-variant: normal; font-weight: 400; =
letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right:=
 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; =
padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: no=
ne; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px;=
 white-space: normal; word-spacing: 0px;"><br></div><div style=3D"backgroun=
d-color: transparent; border-bottom-color: rgb(34, 34, 34); border-bottom-s=
tyle: none; border-bottom-width: 0px; border-image-outset: 0; border-image-=
repeat: stretch; border-image-slice: 100%; border-image-source: none; borde=
r-image-width: 1; border-left-color: rgb(34, 34, 34); border-left-style: no=
ne; border-left-width: 0px; border-right-color: rgb(34, 34, 34); border-rig=
ht-style: none; border-right-width: 0px; border-top-color: rgb(34, 34, 34);=
 border-top-style: none; border-top-width: 0px; color: rgb(34, 34, 34); fon=
t-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-seri=
f; font-size: 13px; font-style: normal; font-variant: normal; font-weight: =
400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-r=
ight: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: =
0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoratio=
n: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width:=
 0px; white-space: normal; word-spacing: 0px;">I means serious... c++ alrea=
dy support bit field widths of up 64 bits... why not make &quot;bit fields&=
quot; an officially supported integer type?</div><div style=3D"background-c=
olor: transparent; border-bottom-color: rgb(34, 34, 34); border-bottom-styl=
e: none; border-bottom-width: 0px; border-image-outset: 0; border-image-rep=
eat: stretch; border-image-slice: 100%; border-image-source: none; border-i=
mage-width: 1; border-left-color: rgb(34, 34, 34); border-left-style: none;=
 border-left-width: 0px; border-right-color: rgb(34, 34, 34); border-right-=
style: none; border-right-width: 0px; border-top-color: rgb(34, 34, 34); bo=
rder-top-style: none; border-top-width: 0px; color: rgb(34, 34, 34); font-f=
amily: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; =
font-size: 13px; font-style: normal; font-variant: normal; font-weight: 400=
; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-righ=
t: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px=
; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: =
none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0p=
x; white-space: normal; word-spacing: 0px;"><br></div><div style=3D"backgro=
und-color: transparent; border-bottom-color: rgb(34, 34, 34); border-bottom=
-style: none; border-bottom-width: 0px; border-image-outset: 0; border-imag=
e-repeat: stretch; border-image-slice: 100%; border-image-source: none; bor=
der-image-width: 1; border-left-color: rgb(34, 34, 34); border-left-style: =
none; border-left-width: 0px; border-right-color: rgb(34, 34, 34); border-r=
ight-style: none; border-right-width: 0px; border-top-color: rgb(34, 34, 34=
); border-top-style: none; border-top-width: 0px; color: rgb(34, 34, 34); f=
ont-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-se=
rif; font-size: 13px; font-style: normal; font-variant: normal; font-weight=
: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin=
-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left=
: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decorat=
ion: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-widt=
h: 0px; white-space: normal; word-spacing: 0px;">Every single time you inst=
antiate a bump it automatically picked the correct integer size and resets =
the bit field back to starting at bit zero...=C2=A0 thus you can have a ful=
ly unpacked struct of bit fields without worrying about alignment issues...=
and its just as fast as using an integer directly but is restricted in bit =
width without a mask. =E2=80=A6</div><div style=3D"background-color: transp=
arent; border-bottom-color: rgb(34, 34, 34); border-bottom-style: none; bor=
der-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch=
; border-image-slice: 100%; border-image-source: none; border-image-width: =
1; border-left-color: rgb(34, 34, 34); border-left-style: none; border-left=
-width: 0px; border-right-color: rgb(34, 34, 34); border-right-style: none;=
 border-right-width: 0px; border-top-color: rgb(34, 34, 34); border-top-sty=
le: none; border-top-width: 0px; color: rgb(34, 34, 34); font-family: &amp;=
quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-size: 1=
3px; font-style: normal; font-variant: normal; font-weight: 400; letter-spa=
cing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; marg=
in-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; padding-ri=
ght: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-i=
ndent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-spa=
ce: normal; word-spacing: 0px;"><br></div><div style=3D"margin: 0px; paddin=
g: 0px; border: 0px rgb(34, 34, 34); border-image: none; text-align: left; =
color: rgb(34, 34, 34); text-transform: none; text-indent: 0px; letter-spac=
ing: normal; font-size: 13px; font-style: normal; font-variant: normal; tex=
t-decoration: none; word-spacing: 0px; white-space: normal; orphans: 2; -we=
bkit-text-stroke-width: 0px; background-color: transparent;"><b>=C2=A0 =C2=
=A0 struct mystruct {</b></div><div style=3D"margin: 0px; padding: 0px; bor=
der: 0px rgb(34, 34, 34); border-image: none; text-align: left; color: rgb(=
34, 34, 34); text-transform: none; text-indent: 0px; letter-spacing: normal=
; font-size: 13px; font-style: normal; font-variant: normal; text-decoratio=
n: none; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-s=
troke-width: 0px; background-color: transparent;"><b>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 bump&lt;4&gt; =C2=A0 fieldx;</b></div><div style=3D"margin: 0px; pad=
ding: 0px; border: 0px rgb(34, 34, 34); border-image: none; text-align: lef=
t; color: rgb(34, 34, 34); text-transform: none; text-indent: 0px; letter-s=
pacing: normal; font-size: 13px; font-style: normal; font-variant: normal; =
text-decoration: none; word-spacing: 0px; white-space: normal; orphans: 2; =
-webkit-text-stroke-width: 0px; background-color: transparent;"><b>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 bump&lt;62&gt; fieldy;</b></div><div style=3D"margin: =
0px; padding: 0px; border: 0px rgb(34, 34, 34); border-image: none; text-al=
ign: left; color: rgb(34, 34, 34); text-transform: none; text-indent: 0px; =
letter-spacing: normal; font-size: 13px; font-style: normal; font-variant: =
normal; text-decoration: none; word-spacing: 0px; white-space: normal; orph=
ans: 2; -webkit-text-stroke-width: 0px; background-color: transparent;"><b>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 bump&lt;22&gt; fieldz;=C2=A0</b></div><div styl=
e=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-image: =
none; text-align: left; color: rgb(34, 34, 34); text-transform: none; text-=
indent: 0px; letter-spacing: normal; font-size: 13px; font-style: normal; f=
ont-variant: normal; text-decoration: none; word-spacing: 0px; white-space:=
 normal; orphans: 2; -webkit-text-stroke-width: 0px; background-color: tran=
sparent;"><b>=C2=A0 =C2=A0 =C2=A0=C2=A0 uint32_t =C2=A0 =C2=A0=C2=A0 etcetc=
;</b></div><div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34,=
 34); border-image: none; text-align: left; color: rgb(34, 34, 34); text-tr=
ansform: none; text-indent: 0px; letter-spacing: normal; font-size: 13px; f=
ont-style: normal; font-variant: normal; text-decoration: none; word-spacin=
g: 0px; white-space: normal; orphans: 2; -webkit-text-stroke-width: 0px; ba=
ckground-color: transparent;"><b>=C2=A0 =C2=A0 }</b></div><div style=3D"bac=
kground-color: transparent; border-bottom-color: rgb(34, 34, 34); border-bo=
ttom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-=
image-repeat: stretch; border-image-slice: 100%; border-image-source: none;=
 border-image-width: 1; border-left-color: rgb(34, 34, 34); border-left-sty=
le: none; border-left-width: 0px; border-right-color: rgb(34, 34, 34); bord=
er-right-style: none; border-right-width: 0px; border-top-color: rgb(34, 34=
, 34); border-top-style: none; border-top-width: 0px; color: rgb(34, 34, 34=
); font-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,san=
s-serif; font-size: 13px; font-style: normal; font-variant: normal; font-we=
ight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; ma=
rgin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-=
left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-dec=
oration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-=
width: 0px; white-space: normal; word-spacing: 0px;"><b></b><br></div><div =
style=3D"background-color: transparent; border-bottom-color: rgb(34, 34, 34=
); border-bottom-style: none; border-bottom-width: 0px; border-image-outset=
: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-s=
ource: none; border-image-width: 1; border-left-color: rgb(34, 34, 34); bor=
der-left-style: none; border-left-width: 0px; border-right-color: rgb(34, 3=
4, 34); border-right-style: none; border-right-width: 0px; border-top-color=
: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; color: rg=
b(34, 34, 34); font-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&a=
mp;quot;,sans-serif; font-size: 13px; font-style: normal; font-variant: nor=
mal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-l=
eft: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0=
px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: le=
ft; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-=
text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br></div>=
<b></b><i></i><u></u><sub></sub><sup></sup><strike></strike>I could do this=
 now using some messy macros:</div><div style=3D"margin: 0px; padding: 0px;=
 border: 0px rgb(34, 34, 34); border-image: none; text-align: left; color: =
rgb(34, 34, 34); text-transform: none; text-indent: 0px; letter-spacing: no=
rmal; font-size: 13px; font-variant: normal; word-spacing: 0px; white-space=
: normal; orphans: 2; -webkit-text-stroke-width: 0px; background-color: tra=
nsparent;"><br></div><div style=3D"margin: 0px; padding: 0px; border: 0px r=
gb(34, 34, 34); border-image: none; text-align: left; color: rgb(34, 34, 34=
); text-transform: none; text-indent: 0px; letter-spacing: normal; font-siz=
e: 13px; font-variant: normal; word-spacing: 0px; white-space: normal; orph=
ans: 2; -webkit-text-stroke-width: 0px; background-color: transparent;">=C2=
=A0 =C2=A0 #define bump(T, NAME, WIDTH) =C2=A0 T :0; T NAME : WIDTH;<br></d=
iv><div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); bo=
rder-image: none; text-align: left; color: rgb(34, 34, 34); text-transform:=
 none; text-indent: 0px; letter-spacing: normal; font-size: 13px; font-vari=
ant: normal; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-te=
xt-stroke-width: 0px; background-color: transparent;"><br></div><div style=
=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-image: n=
one; text-align: left; color: rgb(34, 34, 34); text-transform: none; text-i=
ndent: 0px; letter-spacing: normal; font-size: 13px; font-variant: normal; =
word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-stroke-wid=
th: 0px; background-color: transparent;">=C2=A0=C2=A0 struct mystruct {</di=
v><div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); bor=
der-image: none; text-align: left; color: rgb(34, 34, 34); text-transform: =
none; text-indent: 0px; letter-spacing: normal; font-size: 13px; font-varia=
nt: normal; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-tex=
t-stroke-width: 0px; background-color: transparent;">=C2=A0 =C2=A0 =C2=A0=
=C2=A0 bump(uint8_t, =C2=A0 fieldx, 4);</div><div style=3D"margin: 0px; pad=
ding: 0px; border: 0px rgb(34, 34, 34); border-image: none; text-align: lef=
t; color: rgb(34, 34, 34); text-transform: none; text-indent: 0px; letter-s=
pacing: normal; font-size: 13px; font-variant: normal; word-spacing: 0px; w=
hite-space: normal; orphans: 2; -webkit-text-stroke-width: 0px; background-=
color: transparent;">=C2=A0 =C2=A0 =C2=A0=C2=A0 bump(uint64_t, fieldy, 62);=
</div><div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34);=
 border-image: none; text-align: left; color: rgb(34, 34, 34); text-transfo=
rm: none; text-indent: 0px; letter-spacing: normal; font-size: 13px; font-v=
ariant: normal; word-spacing: 0px; white-space: normal; orphans: 2; -webkit=
-text-stroke-width: 0px; background-color: transparent;">=C2=A0 =C2=A0 =C2=
=A0=C2=A0 bump(uint32_t, fieldz, 22);</div><div style=3D"margin: 0px; paddi=
ng: 0px; border: 0px rgb(34, 34, 34); border-image: none; text-align: left;=
 color: rgb(34, 34, 34); text-transform: none; text-indent: 0px; letter-spa=
cing: normal; font-size: 13px; font-variant: normal; word-spacing: 0px; whi=
te-space: normal; orphans: 2; -webkit-text-stroke-width: 0px; background-co=
lor: transparent;">=C2=A0 =C2=A0 =C2=A0=C2=A0 uint32_t=C2=A0 etcetc;</div><=
div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border=
-image: none; text-align: left; color: rgb(34, 34, 34); text-transform: non=
e; text-indent: 0px; letter-spacing: normal; font-size: 13px; font-variant:=
 normal; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-s=
troke-width: 0px; background-color: transparent;">=C2=A0=C2=A0 }</div><div =
style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-ima=
ge: none; text-align: left; color: rgb(34, 34, 34); text-transform: none; t=
ext-indent: 0px; letter-spacing: normal; font-size: 13px; font-variant: nor=
mal; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-strok=
e-width: 0px; background-color: transparent;"><br></div><div style=3D"margi=
n: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-image: none; text=
-align: left; color: rgb(34, 34, 34); text-transform: none; text-indent: 0p=
x; letter-spacing: normal; font-size: 13px; font-variant: normal; word-spac=
ing: 0px; white-space: normal; orphans: 2; -webkit-text-stroke-width: 0px; =
background-color: transparent;"><br></div><b style=3D"background-attachment=
: scroll; background-clip: border-box; background-color: transparent; backg=
round-image: none; background-origin: padding-box; background-position-x: 0=
%; background-position-y: 0%; background-repeat: repeat; background-size: a=
uto; border-bottom-color: rgb(34, 34, 34); border-bottom-style: none; borde=
r-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; =
border-image-slice: 100%; border-image-source: none; border-image-width: 1;=
 border-left-color: rgb(34, 34, 34); border-left-style: none; border-left-w=
idth: 0px; border-right-color: rgb(34, 34, 34); border-right-style: none; b=
order-right-width: 0px; border-top-color: rgb(34, 34, 34); border-top-style=
: none; border-top-width: 0px; color: rgb(34, 34, 34); font-family: &amp;qu=
ot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-size: 13p=
x; font-style: normal; font-variant: normal; font-weight: 700; height: auto=
; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-righ=
t: 0px; margin-top: 0px; min-width: 0px; orphans: 2; overflow: visible; ove=
rflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0=
px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration=
: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: =
0px; white-space: normal; word-spacing: 0px;"></b><i style=3D"background-at=
tachment: scroll; background-clip: border-box; background-color: transparen=
t; background-image: none; background-origin: padding-box; background-posit=
ion-x: 0%; background-position-y: 0%; background-repeat: repeat; background=
-size: auto; border-bottom-color: rgb(34, 34, 34); border-bottom-style: non=
e; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: s=
tretch; border-image-slice: 100%; border-image-source: none; border-image-w=
idth: 1; border-left-color: rgb(34, 34, 34); border-left-style: none; borde=
r-left-width: 0px; border-right-color: rgb(34, 34, 34); border-right-style:=
 none; border-right-width: 0px; border-top-color: rgb(34, 34, 34); border-t=
op-style: none; border-top-width: 0px; color: rgb(34, 34, 34); font-family:=
 &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-s=
ize: 13px; font-style: italic; font-variant: normal; font-weight: 400; heig=
ht: auto; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; mar=
gin-right: 0px; margin-top: 0px; min-width: 0px; orphans: 2; overflow: visi=
ble; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding=
-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-de=
coration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke=
-width: 0px; white-space: normal; word-spacing: 0px;"></i><u style=3D"backg=
round-attachment: scroll; background-clip: border-box; background-color: tr=
ansparent; background-image: none; background-origin: padding-box; backgrou=
nd-position-x: 0%; background-position-y: 0%; background-repeat: repeat; ba=
ckground-size: auto; border-bottom-color: rgb(34, 34, 34); border-bottom-st=
yle: none; border-bottom-width: 0px; border-image-outset: 0; border-image-r=
epeat: stretch; border-image-slice: 100%; border-image-source: none; border=
-image-width: 1; border-left-color: rgb(34, 34, 34); border-left-style: non=
e; border-left-width: 0px; border-right-color: rgb(34, 34, 34); border-righ=
t-style: none; border-right-width: 0px; border-top-color: rgb(34, 34, 34); =
border-top-style: none; border-top-width: 0px; color: rgb(34, 34, 34); font=
-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif=
; font-size: 13px; font-style: normal; font-variant: normal; font-weight: 4=
00; height: auto; letter-spacing: normal; margin-bottom: 0px; margin-left: =
0px; margin-right: 0px; margin-top: 0px; min-width: 0px; orphans: 2; overfl=
ow: visible; overflow-x: visible; overflow-y: visible; padding-bottom: 0px;=
 padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;=
 text-decoration: underline; text-indent: 0px; text-transform: none; -webki=
t-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"></u><sub=
 style=3D"background-color: transparent; border-bottom-color: rgb(34, 34, 3=
4); border-bottom-style: none; border-bottom-width: 0px; border-image-outse=
t: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-=
source: none; border-image-width: 1; border-left-color: rgb(34, 34, 34); bo=
rder-left-style: none; border-left-width: 0px; border-right-color: rgb(34, =
34, 34); border-right-style: none; border-right-width: 0px; border-top-colo=
r: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; color: r=
gb(34, 34, 34); font-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&=
amp;quot;,sans-serif; font-size: 9px; font-style: normal; font-variant: nor=
mal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-l=
eft: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0=
px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: le=
ft; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-=
text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"></sub><sup=
 style=3D"background-color: transparent; border-bottom-color: rgb(34, 34, 3=
4); border-bottom-style: none; border-bottom-width: 0px; border-image-outse=
t: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-=
source: none; border-image-width: 1; border-left-color: rgb(34, 34, 34); bo=
rder-left-style: none; border-left-width: 0px; border-right-color: rgb(34, =
34, 34); border-right-style: none; border-right-width: 0px; border-top-colo=
r: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; color: r=
gb(34, 34, 34); font-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&=
amp;quot;,sans-serif; font-size: 9px; font-style: normal; font-variant: nor=
mal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-l=
eft: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0=
px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: le=
ft; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-=
text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"></sup><str=
ike style=3D"background-color: transparent; border-bottom-color: rgb(34, 34=
, 34); border-bottom-style: none; border-bottom-width: 0px; border-image-ou=
tset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-ima=
ge-source: none; border-image-width: 1; border-left-color: rgb(34, 34, 34);=
 border-left-style: none; border-left-width: 0px; border-right-color: rgb(3=
4, 34, 34); border-right-style: none; border-right-width: 0px; border-top-c=
olor: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; color=
: rgb(34, 34, 34); font-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helveti=
ca&amp;quot;,sans-serif; font-size: 13px; font-style: normal; font-variant:=
 normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; marg=
in-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; padding-botto=
m: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align=
: left; text-decoration: line-through; text-indent: 0px; text-transform: no=
ne; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;=
"></strike><b style=3D"background-attachment: scroll; background-clip: bord=
er-box; background-color: transparent; background-image: none; background-o=
rigin: padding-box; background-position-x: 0%; background-position-y: 0%; b=
ackground-repeat: repeat; background-size: auto; border-bottom-color: rgb(3=
4, 34, 34); border-bottom-style: none; border-bottom-width: 0px; border-ima=
ge-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; borde=
r-image-source: none; border-image-width: 1; border-left-color: rgb(34, 34,=
 34); border-left-style: none; border-left-width: 0px; border-right-color: =
rgb(34, 34, 34); border-right-style: none; border-right-width: 0px; border-=
top-color: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; =
color: rgb(34, 34, 34); font-family: &amp;quot;Arial&amp;quot;,&amp;quot;He=
lvetica&amp;quot;,sans-serif; font-size: 13px; font-style: normal; font-var=
iant: normal; font-weight: 700; height: auto; letter-spacing: normal; margi=
n-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-wi=
dth: 0px; orphans: 2; overflow: visible; overflow-x: visible; overflow-y: v=
isible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding=
-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-=
transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-=
spacing: 0px;"></b><i style=3D"background-attachment: scroll; background-cl=
ip: border-box; background-color: transparent; background-image: none; back=
ground-origin: padding-box; background-position-x: 0%; background-position-=
y: 0%; background-repeat: repeat; background-size: auto; border-bottom-colo=
r: rgb(34, 34, 34); border-bottom-style: none; border-bottom-width: 0px; bo=
rder-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100=
%; border-image-source: none; border-image-width: 1; border-left-color: rgb=
(34, 34, 34); border-left-style: none; border-left-width: 0px; border-right=
-color: rgb(34, 34, 34); border-right-style: none; border-right-width: 0px;=
 border-top-color: rgb(34, 34, 34); border-top-style: none; border-top-widt=
h: 0px; color: rgb(34, 34, 34); font-family: &amp;quot;Arial&amp;quot;,&amp=
;quot;Helvetica&amp;quot;,sans-serif; font-size: 13px; font-style: italic; =
font-variant: normal; font-weight: 400; height: auto; letter-spacing: norma=
l; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px=
; min-width: 0px; orphans: 2; overflow: visible; overflow-x: visible; overf=
low-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px;=
 padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0p=
x; text-transform: none; -webkit-text-stroke-width: 0px; white-space: norma=
l; word-spacing: 0px;"></i><u style=3D"background-attachment: scroll; backg=
round-clip: border-box; background-color: transparent; background-image: no=
ne; background-origin: padding-box; background-position-x: 0%; background-p=
osition-y: 0%; background-repeat: repeat; background-size: auto; border-bot=
tom-color: rgb(34, 34, 34); border-bottom-style: none; border-bottom-width:=
 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-sl=
ice: 100%; border-image-source: none; border-image-width: 1; border-left-co=
lor: rgb(34, 34, 34); border-left-style: none; border-left-width: 0px; bord=
er-right-color: rgb(34, 34, 34); border-right-style: none; border-right-wid=
th: 0px; border-top-color: rgb(34, 34, 34); border-top-style: none; border-=
top-width: 0px; color: rgb(34, 34, 34); font-family: &amp;quot;Arial&amp;qu=
ot;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-size: 13px; font-style: =
normal; font-variant: normal; font-weight: 400; height: auto; letter-spacin=
g: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-=
top: 0px; min-width: 0px; orphans: 2; overflow: visible; overflow-x: visibl=
e; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-rig=
ht: 0px; padding-top: 0px; text-align: left; text-decoration: underline; te=
xt-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white=
-space: normal; word-spacing: 0px;"></u><sub style=3D"background-color: tra=
nsparent; border-bottom-color: rgb(34, 34, 34); border-bottom-style: none; =
border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stre=
tch; border-image-slice: 100%; border-image-source: none; border-image-widt=
h: 1; border-left-color: rgb(34, 34, 34); border-left-style: none; border-l=
eft-width: 0px; border-right-color: rgb(34, 34, 34); border-right-style: no=
ne; border-right-width: 0px; border-top-color: rgb(34, 34, 34); border-top-=
style: none; border-top-width: 0px; color: rgb(34, 34, 34); font-family: &a=
mp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-size=
: 9px; font-style: normal; font-variant: normal; font-weight: 400; letter-s=
pacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; ma=
rgin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; padding-=
right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text=
-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-s=
pace: normal; word-spacing: 0px;"></sub><sup style=3D"background-color: tra=
nsparent; border-bottom-color: rgb(34, 34, 34); border-bottom-style: none; =
border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stre=
tch; border-image-slice: 100%; border-image-source: none; border-image-widt=
h: 1; border-left-color: rgb(34, 34, 34); border-left-style: none; border-l=
eft-width: 0px; border-right-color: rgb(34, 34, 34); border-right-style: no=
ne; border-right-width: 0px; border-top-color: rgb(34, 34, 34); border-top-=
style: none; border-top-width: 0px; color: rgb(34, 34, 34); font-family: &a=
mp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-size=
: 9px; font-style: normal; font-variant: normal; font-weight: 400; letter-s=
pacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; ma=
rgin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; padding-=
right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text=
-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-s=
pace: normal; word-spacing: 0px;"></sup><strike style=3D"background-color: =
transparent; border-bottom-color: rgb(34, 34, 34); border-bottom-style: non=
e; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: s=
tretch; border-image-slice: 100%; border-image-source: none; border-image-w=
idth: 1; border-left-color: rgb(34, 34, 34); border-left-style: none; borde=
r-left-width: 0px; border-right-color: rgb(34, 34, 34); border-right-style:=
 none; border-right-width: 0px; border-top-color: rgb(34, 34, 34); border-t=
op-style: none; border-top-width: 0px; color: rgb(34, 34, 34); font-family:=
 &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-s=
ize: 13px; font-style: normal; font-variant: normal; font-weight: 400; lett=
er-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px=
; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; padd=
ing-right: 0px; padding-top: 0px; text-align: left; text-decoration: line-t=
hrough; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: =
0px; white-space: normal; word-spacing: 0px;"></strike><b></b><i></i><u></u=
><sub></sub><sup></sup><strike></strike><b></b><i></i><u></u><sub></sub><su=
p></sup><strike></strike>Further... you could maps a struct implicitly arou=
nd a bump if not provided allowing you to remove a &quot;bump&quot; from th=
e struct and use it directly as a integer variable....</div><div>example:</=
div><div><br></div><div>=C2=A0 main() {</div><div><div style=3D"background-=
color: transparent; border-bottom-color: rgb(34, 34, 34); border-bottom-sty=
le: none; border-bottom-width: 0px; border-image-outset: 0; border-image-re=
peat: stretch; border-image-slice: 100%; border-image-source: none; border-=
image-width: 1; border-left-color: rgb(34, 34, 34); border-left-style: none=
; border-left-width: 0px; border-right-color: rgb(34, 34, 34); border-right=
-style: none; border-right-width: 0px; border-top-color: rgb(34, 34, 34); b=
order-top-style: none; border-top-width: 0px; color: rgb(34, 34, 34); font-=
family: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif;=
 font-size: 13px; font-style: normal; font-variant: normal; font-weight: 40=
0; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-rig=
ht: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0p=
x; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration:=
 none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0=
px; white-space: normal; word-spacing: 0px;">=C2=A0 =C2=A0 =C2=A0 bump&lt;4=
&gt; x;=C2=A0 // =3D&gt; maps to: =C2=A0 struct x_implicit { uint8_t :0 ix;=
=C2=A0 uint8_t ix : 4}; x_implicit x;</div>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 b=
ump&lt;34&gt; y;=C2=A0 // =3D&gt; maps to: =C2=A0 struct y_implicit { uint6=
4_t :0 iy;=C2=A0 uint64_t iy : 4}; y_implicit y;</div><div><br></div><div>=
=C2=A0 =C2=A0 // and it does modulus math correcly=C2=A0</div><div>=C2=A0 =
=C2=A0=C2=A0 x =3D 0xF;</div><div><br></div><div>=C2=A0 =C2=A0=C2=A0 // mod=
ulus rollover</div><div>=C2=A0 =C2=A0=C2=A0 x +=3D 1;</div><div>=C2=A0 =C2=
=A0=C2=A0 cout &lt;&lt; &quot;x: &quot; &lt;&lt; x;</div><div>=C2=A0 =C2=A0=
 // prints=C2=A0 0</div><div><br></div><div><div style=3D"background-color:=
 transparent; border-bottom-color: rgb(34, 34, 34); border-bottom-style: no=
ne; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: =
stretch; border-image-slice: 100%; border-image-source: none; border-image-=
width: 1; border-left-color: rgb(34, 34, 34); border-left-style: none; bord=
er-left-width: 0px; border-right-color: rgb(34, 34, 34); border-right-style=
: none; border-right-width: 0px; border-top-color: rgb(34, 34, 34); border-=
top-style: none; border-top-width: 0px; color: rgb(34, 34, 34); font-family=
: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-=
size: 13px; font-style: normal; font-variant: normal; font-weight: 400; let=
ter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0p=
x; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; pad=
ding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none;=
 text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; wh=
ite-space: normal; word-spacing: 0px;">=C2=A0 =C2=A0=C2=A0 x +=3D 1;</div><=
div style=3D"background-color: transparent; border-bottom-color: rgb(34, 34=
, 34); border-bottom-style: none; border-bottom-width: 0px; border-image-ou=
tset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-ima=
ge-source: none; border-image-width: 1; border-left-color: rgb(34, 34, 34);=
 border-left-style: none; border-left-width: 0px; border-right-color: rgb(3=
4, 34, 34); border-right-style: none; border-right-width: 0px; border-top-c=
olor: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; color=
: rgb(34, 34, 34); font-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helveti=
ca&amp;quot;,sans-serif; font-size: 13px; font-style: normal; font-variant:=
 normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; marg=
in-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; padding-botto=
m: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align=
: left; text-decoration: none; text-indent: 0px; text-transform: none; -web=
kit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">=C2=A0=
 =C2=A0=C2=A0 cout &lt;&lt; &quot;x: &quot; &lt;&lt; x;</div><div style=3D"=
background-color: transparent; border-bottom-color: rgb(34, 34, 34); border=
-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; bord=
er-image-repeat: stretch; border-image-slice: 100%; border-image-source: no=
ne; border-image-width: 1; border-left-color: rgb(34, 34, 34); border-left-=
style: none; border-left-width: 0px; border-right-color: rgb(34, 34, 34); b=
order-right-style: none; border-right-width: 0px; border-top-color: rgb(34,=
 34, 34); border-top-style: none; border-top-width: 0px; color: rgb(34, 34,=
 34); font-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,=
sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font=
-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px;=
 margin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; paddi=
ng-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-=
decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stro=
ke-width: 0px; white-space: normal; word-spacing: 0px;">=C2=A0 =C2=A0 // pr=
ints=C2=A0 1<br></div></div><div>=C2=A0 }</div><div><br></div><div>Anyways.=
... just my 2 cents...=C2=A0</div><div><br></div><div><br></div></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/fbb22a41-e253-4155-b3ce-02b1c97df4a5%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/fbb22a41-e253-4155-b3ce-02b1c97df4a5=
%40isocpp.org</a>.<br />

------=_Part_1116_1785891630.1534627494492--

------=_Part_1115_1200327683.1534627494491--

.