Topic: RFC: Ordinal types and ordinal containers


Author: "Vicente J. Botet Escriba" <vicente.botet@wanadoo.fr>
Date: Sun, 29 Oct 2017 09:32:23 +0100
Raw View
This is a multi-part message in MIME format.
--------------FC0A9F36FDC6D78F70A6B7A5
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: quoted-printable

Hi,


I've been playing with ordinal types for some time. An ordinal type is a=20
type isomorphic to 0..N.

[ADA] has ordinal types builtin in the languages (enumerations), with=20
operations as pos/val/size succ/pred. So an Ordinal type would be a type=20
that defines the operations

position : O -> int

value : int ->O

size<O> : ->int


Once we have such position/value/size mapping, we can use any ordinal=20
type as index of an ordinal_array container (([ADA] arrays are indexed=20
by enumeration types) or as index of a ordinal_set, or just an=20
ordinal_range that allows to iterate over all the values of an Ordinal type

Defining the position/value/size mapping is something that could be=20
cumbersome. But, now that we will have reflection on one way or another=20
it is time to check if there will be an interest on such kind of ordinal=20
types and the associated containers. Note that an enum having unique=20
enumerator values would be isomorphic to 0...N and can be seen as an=20
ordinal type.

What do we lost if we don't have such Ordinal abstraction and the=20
associated Ordinal containers?

 =C2=A0=C2=A0=C2=A0 When you start to create a lot of strong types that wra=
p an ordinal=20
type, we are unable to use them as index of std::array, or add=C2=A0 them t=
o=20
a std::bitset or just iterate over all the elements of the new type=20
using possibly iota(size(O) + wrapping it again.

 =C2=A0=C2=A0=C2=A0 The user is forced to do explicitly do the the mapping =
from the=20
Ordinal type to its index in the range 0..N and vice-versa.

Examples of ordinal types

 =C2=A0=C2=A0=C2=A0 * A future std::bounded_int<1,12>

 =C2=A0=C2=A0=C2=A0 * std::experimental::month, std::experimental::weekday

I have a POC [1]=C2=A0 that doesn't use reflection yet, that is, the mappin=
g=20
must be done explicitly. Reflection would of course help to map enums to=20
ordinal types. For UDT we need to analyze yet how reflection could help.

Is there an interest for a proposal for Ordinal types,=20
ordinal_array<T,O>, ordinal_set<O> and ordinal_range<O>?


Best,

Vicente


[1]=20
https://github.com/viboes/std-make/tree/master/include/experimental/fundame=
ntal/v3/ordinal=20
and https://github.com/viboes/std-make/tree/master/test/ordinal



** <http://drdobbs.com/cpp/184401797>
*Enumerations* <http://drdobbs.com/cpp/184401797>

    Herb Sutter and Jim Hyslop

*Enumerations Q & A*=20
<http://www.eetimes.com/discussion/programming-pointers/4024556/Enumeration=
s-Q--A>

    Dan Saks

*Flag Waiving*=20
<http://www.two-sdg.demon.co.uk/curbralan/papers/FlagWaiving.pdf>

    Kevlin Henney


**=20
<https://htmlpreview.github.io/?https://github.com/viboes/enums/blob/master=
/libs/enums/doc/html/index.html#Ada>
[ADA] https://en.wikibooks.org/wiki/Ada_Programming/Types/Enumeration=20
and https://en.wikibooks.org/wiki/Ada_Programming/Types/array


--=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/7817d633-c584-cbc6-38c2-37c9fbe5282e%40wanadoo.f=
r.

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

<html>
  <head>

    <meta http-equiv=3D"content-type" content=3D"text/html; charset=3Dutf-8=
">
  </head>
  <body text=3D"#000000" bgcolor=3D"#FFFFFF">
    <p><font size=3D"+1">Hi,</font></p>
    <p><font size=3D"+1"><br>
      </font></p>
    <p><font size=3D"+1">I've been playing with ordinal types for some
        time. </font><font size=3D"+1">An ordinal type is a type
        isomorphic to 0..N</font>.</p>
    <p>[ADA] has ordinal types builtin in the languages (enumerations),
      with operations as pos/val/size succ/pred. So an Ordinal type
      would be a type that defines the operations</p>
    <p>position : O -&gt; int <br>
    </p>
    <p>value : int -&gt;O</p>
    <p>size&lt;O&gt; : -&gt;int</p>
    <p><br>
    </p>
    <p>Once we have such position/value/size mapping, we can use any
      ordinal type as index of an ordinal_array container (([ADA] arrays
      are indexed by enumeration types) or as index of a ordinal_set, or
      just an ordinal_range that allows to iterate over all the values
      of an Ordinal type <br>
    </p>
    <p>Defining the position/value/size mapping is something that could
      be cumbersome. But, n<font size=3D"+1">ow that we will have
        reflection on one way or another it is time to check if there
        will be an interest on such kind of ordinal types and the
        associated containers. Note that an enum having unique
        enumerator values would be isomorphic to 0...N and can be seen
        as an ordinal type.</font></p>
    <p><font size=3D"+1">What do we lost if we don't have such Ordinal
        abstraction and the associated Ordinal containers?</font></p>
    <font size=3D"+1">=C2=A0=C2=A0=C2=A0 When you start to create a lot of =
strong types
      that wrap an ordinal type, we are unable to use them as index of
      std::array, or add=C2=A0 them to a std::bitset or just iterate over a=
ll
      the elements of the new type using possibly iota(size(O) +
      wrapping it again.<br>
    </font>
    <p><font size=3D"+1">=C2=A0=C2=A0=C2=A0 The user is forced to do explic=
itly do the
        the mapping from the Ordinal type to its index in the range 0..N
        and vice-versa.<br>
      </font></p>
    <p><font size=3D"+1">Examples of ordinal types<br>
      </font></p>
    <p><font size=3D"+1">=C2=A0=C2=A0=C2=A0 * A future std::bounded_int&lt;=
1,12&gt;<br>
      </font></p>
    <p><font size=3D"+1">=C2=A0=C2=A0=C2=A0 * std::experimental::month, </f=
ont><font
        size=3D"+1"><font size=3D"+1">std::experimental::weekday</font> <br=
>
      </font></p>
    <p><font size=3D"+1">I have a POC [1]=C2=A0 that doesn't use reflection
        yet, that is, the mapping must be done explicitly. Reflection
        would of course help to map enums to ordinal types. For UDT we
        need to analyze yet how reflection could help.<br>
      </font></p>
    <p><font size=3D"+1">Is there an interest for a proposal for Ordinal
        types, ordinal_array&lt;T,O&gt;, ordinal_set&lt;O&gt; and
        ordinal_range&lt;O&gt;?<br>
      </font></p>
    <p><font size=3D"+1"><br>
      </font></p>
    <p><font size=3D"+1">Best,</font></p>
    <p><font size=3D"+1">Vicente</font></p>
    <p><font size=3D"+1"><br>
      </font></p>
    <p><font size=3D"+1">[1]
<a class=3D"moz-txt-link-freetext" href=3D"https://github.com/viboes/std-ma=
ke/tree/master/include/experimental/fundamental/v3/ordinal">https://github.=
com/viboes/std-make/tree/master/include/experimental/fundamental/v3/ordinal=
</a>
        and <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/v=
iboes/std-make/tree/master/test/ordinal">https://github.com/viboes/std-make=
/tree/master/test/ordinal</a><br>
      </font></p>
    <p><br>
      <font size=3D"+1"><dt><br>
          <span class=3D"term"><a href=3D"http://drdobbs.com/cpp/184401797"
              target=3D"_top"><span class=3D"bold"><strong></strong></span>=
</a></span></dt>
        <dt><span class=3D"term"><a
              href=3D"http://drdobbs.com/cpp/184401797" target=3D"_top"><sp=
an
                class=3D"bold"><strong>Enumerations</strong></span></a></sp=
an></dt>
        <dd>
          <p> Herb Sutter and Jim Hyslop </p>
        </dd>
        <dt><span class=3D"term"><a
href=3D"http://www.eetimes.com/discussion/programming-pointers/4024556/Enum=
erations-Q--A"
              target=3D"_top"><span class=3D"bold"><strong>Enumerations Q
                  &amp; A</strong></span></a></span></dt>
        <dd>
          <p> Dan Saks </p>
        </dd>
        <dt><span class=3D"term"><a
              href=3D"http://www.two-sdg.demon.co.uk/curbralan/papers/FlagW=
aiving.pdf"
              target=3D"_top"><span class=3D"bold"><strong>Flag Waiving</st=
rong></span></a></span></dt>
        <dd>
          <p> Kevlin Henney </p>
        </dd>
        <dt></dt>
        <dt><br>
          <span class=3D"term"><a
href=3D"https://htmlpreview.github.io/?https://github.com/viboes/enums/blob=
/master/libs/enums/doc/html/index.html#Ada"
              target=3D"_top"><span class=3D"bold"><strong></strong></span>=
</a></span></dt>
        <dt>[ADA]
          <a class=3D"moz-txt-link-freetext" href=3D"https://en.wikibooks.o=
rg/wiki/Ada_Programming/Types/Enumeration">https://en.wikibooks.org/wiki/Ad=
a_Programming/Types/Enumeration</a>
          and <a class=3D"moz-txt-link-freetext" href=3D"https://en.wikiboo=
ks.org/wiki/Ada_Programming/Types/array">https://en.wikibooks.org/wiki/Ada_=
Programming/Types/array</a><br>
        </dt>
      </font></p>
    <p><br>
    </p>
    <p><font size=3D"+1"> </font></p>
  </body>
</html>

<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/7817d633-c584-cbc6-38c2-37c9fbe5282e%=
40wanadoo.fr?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/7817d633-c584-cbc6-38c2-37c9fbe5282e=
%40wanadoo.fr</a>.<br />

--------------FC0A9F36FDC6D78F70A6B7A5--

.


Author: "Vicente J. Botet Escriba" <vicente.botet@wanadoo.fr>
Date: Sun, 29 Oct 2017 14:16:36 +0100
Raw View
This is a multi-part message in MIME format.
--------------BF69E17238354164ACEA60F2
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: quoted-printable

A first draft of the proposal can be found here

https://github.com/viboes/std-make/blob/master/doc/proposal/ordinal/Ordinal=
..md

Vicente

Le 29/10/2017 =C3=A0 09:32, Vicente J. Botet Escriba a =C3=A9crit=C2=A0:
>
> Hi,
>
>
> I've been playing with ordinal types for some time. An ordinal type is=20
> a type isomorphic to 0..N.
>
> [ADA] has ordinal types builtin in the languages (enumerations), with=20
> operations as pos/val/size succ/pred. So an Ordinal type would be a=20
> type that defines the operations
>
> position : O -> int
>
> value : int ->O
>
> size<O> : ->int
>
>
> Once we have such position/value/size mapping, we can use any ordinal=20
> type as index of an ordinal_array container (([ADA] arrays are indexed=20
> by enumeration types) or as index of a ordinal_set, or just an=20
> ordinal_range that allows to iterate over all the values of an Ordinal=20
> type
>
> Defining the position/value/size mapping is something that could be=20
> cumbersome. But, now that we will have reflection on one way or=20
> another it is time to check if there will be an interest on such kind=20
> of ordinal types and the associated containers. Note that an enum=20
> having unique enumerator values would be isomorphic to 0...N and can=20
> be seen as an ordinal type.
>
> What do we lost if we don't have such Ordinal abstraction and the=20
> associated Ordinal containers?
>
> =C2=A0=C2=A0=C2=A0 When you start to create a lot of strong types that wr=
ap an=20
> ordinal type, we are unable to use them as index of std::array, or=20
> add=C2=A0 them to a std::bitset or just iterate over all the elements of=
=20
> the new type using possibly iota(size(O) + wrapping it again.
>
> =C2=A0=C2=A0=C2=A0 The user is forced to do explicitly do the the mapping=
 from the=20
> Ordinal type to its index in the range 0..N and vice-versa.
>
> Examples of ordinal types
>
> =C2=A0=C2=A0=C2=A0 * A future std::bounded_int<1,12>
>
> =C2=A0=C2=A0=C2=A0 * std::experimental::month, std::experimental::weekday
>
> I have a POC [1]=C2=A0 that doesn't use reflection yet, that is, the=20
> mapping must be done explicitly. Reflection would of course help to=20
> map enums to ordinal types. For UDT we need to analyze yet how=20
> reflection could help.
>
> Is there an interest for a proposal for Ordinal types,=20
> ordinal_array<T,O>, ordinal_set<O> and ordinal_range<O>?
>
>
> Best,
>
> Vicente
>
>
> [1]=20
> https://github.com/viboes/std-make/tree/master/include/experimental/funda=
mental/v3/ordinal=20
> and https://github.com/viboes/std-make/tree/master/test/ordinal
>
>
>
> ** <http://drdobbs.com/cpp/184401797>
> *Enumerations* <http://drdobbs.com/cpp/184401797>
>
>     Herb Sutter and Jim Hyslop
>
> *Enumerations Q & A*=20
> <http://www.eetimes.com/discussion/programming-pointers/4024556/Enumerati=
ons-Q--A>
>
>     Dan Saks
>
> *Flag Waiving*=20
> <http://www.two-sdg.demon.co.uk/curbralan/papers/FlagWaiving.pdf>
>
>     Kevlin Henney
>
>
>
> **=20
> <https://htmlpreview.github.io/?https://github.com/viboes/enums/blob/mast=
er/libs/enums/doc/html/index.html#Ada>
> [ADA] https://en.wikibooks.org/wiki/Ada_Programming/Types/Enumeration=20
> and https://en.wikibooks.org/wiki/Ada_Programming/Types/array
>
>
> --=20
> You received this message because you are subscribed to the Google=20
> Groups "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this group and stop receiving emails from it, send=20
> an email to std-proposals+unsubscribe@isocpp.org=20
> <mailto:std-proposals+unsubscribe@isocpp.org>.
> To post to this group, send email to std-proposals@isocpp.org=20
> <mailto:std-proposals@isocpp.org>.
> To view this discussion on the web visit=20
> https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/7817d633-c58=
4-cbc6-38c2-37c9fbe5282e%40wanadoo.fr=20
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/7817d633-c5=
84-cbc6-38c2-37c9fbe5282e%40wanadoo.fr?utm_medium=3Demail&utm_source=3Dfoot=
er>.


--=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/162b54ad-253b-cb47-8089-d66bc19510b3%40wanadoo.f=
r.

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

<html>
  <head>
    <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dutf-8=
">
  </head>
  <body text=3D"#000000" bgcolor=3D"#FFFFFF">
    <div class=3D"moz-cite-prefix">A first draft of the proposal can be
      found here<br>
      <br>
<a class=3D"moz-txt-link-freetext" href=3D"https://github.com/viboes/std-ma=
ke/blob/master/doc/proposal/ordinal/Ordinal.md">https://github.com/viboes/s=
td-make/blob/master/doc/proposal/ordinal/Ordinal.md</a><br>
      <br>
      Vicente<br>
      <br>
      Le 29/10/2017 =C3=A0 09:32, Vicente J. Botet Escriba a =C3=A9crit=C2=
=A0:<br>
    </div>
    <blockquote type=3D"cite"
      cite=3D"mid:7817d633-c584-cbc6-38c2-37c9fbe5282e@wanadoo.fr">
      <meta http-equiv=3D"content-type" content=3D"text/html; charset=3Dutf=
-8">
      <p><font size=3D"+1">Hi,</font></p>
      <p><font size=3D"+1"><br>
        </font></p>
      <p><font size=3D"+1">I've been playing with ordinal types for some
          time. </font><font size=3D"+1">An ordinal type is a type
          isomorphic to 0..N</font>.</p>
      <p>[ADA] has ordinal types builtin in the languages
        (enumerations), with operations as pos/val/size succ/pred. So an
        Ordinal type would be a type that defines the operations</p>
      <p>position : O -&gt; int <br>
      </p>
      <p>value : int -&gt;O</p>
      <p>size&lt;O&gt; : -&gt;int</p>
      <p><br>
      </p>
      <p>Once we have such position/value/size mapping, we can use any
        ordinal type as index of an ordinal_array container (([ADA]
        arrays are indexed by enumeration types) or as index of a
        ordinal_set, or just an ordinal_range that allows to iterate
        over all the values of an Ordinal type <br>
      </p>
      <p>Defining the position/value/size mapping is something that
        could be cumbersome. But, n<font size=3D"+1">ow that we will have
          reflection on one way or another it is time to check if there
          will be an interest on such kind of ordinal types and the
          associated containers. Note that an enum having unique
          enumerator values would be isomorphic to 0...N and can be seen
          as an ordinal type.</font></p>
      <p><font size=3D"+1">What do we lost if we don't have such Ordinal
          abstraction and the associated Ordinal containers?</font></p>
      <font size=3D"+1">=C2=A0=C2=A0=C2=A0 When you start to create a lot o=
f strong types
        that wrap an ordinal type, we are unable to use them as index of
        std::array, or add=C2=A0 them to a std::bitset or just iterate over
        all the elements of the new type using possibly iota(size(O) +
        wrapping it again.<br>
      </font>
      <p><font size=3D"+1">=C2=A0=C2=A0=C2=A0 The user is forced to do expl=
icitly do the
          the mapping from the Ordinal type to its index in the range
          0..N and vice-versa.<br>
        </font></p>
      <p><font size=3D"+1">Examples of ordinal types<br>
        </font></p>
      <p><font size=3D"+1">=C2=A0=C2=A0=C2=A0 * A future std::bounded_int&l=
t;1,12&gt;<br>
        </font></p>
      <p><font size=3D"+1">=C2=A0=C2=A0=C2=A0 * std::experimental::month, <=
/font><font
          size=3D"+1"><font size=3D"+1">std::experimental::weekday</font> <=
br>
        </font></p>
      <p><font size=3D"+1">I have a POC [1]=C2=A0 that doesn't use reflecti=
on
          yet, that is, the mapping must be done explicitly. Reflection
          would of course help to map enums to ordinal types. For UDT we
          need to analyze yet how reflection could help.<br>
        </font></p>
      <p><font size=3D"+1">Is there an interest for a proposal for Ordinal
          types, ordinal_array&lt;T,O&gt;, ordinal_set&lt;O&gt; and
          ordinal_range&lt;O&gt;?<br>
        </font></p>
      <p><font size=3D"+1"><br>
        </font></p>
      <p><font size=3D"+1">Best,</font></p>
      <p><font size=3D"+1">Vicente</font></p>
      <p><font size=3D"+1"><br>
        </font></p>
      <p><font size=3D"+1">[1]
          <a class=3D"moz-txt-link-freetext"
href=3D"https://github.com/viboes/std-make/tree/master/include/experimental=
/fundamental/v3/ordinal"
            moz-do-not-send=3D"true">https://github.com/viboes/std-make/tre=
e/master/include/experimental/fundamental/v3/ordinal</a>
          and <a class=3D"moz-txt-link-freetext"
            href=3D"https://github.com/viboes/std-make/tree/master/test/ord=
inal"
            moz-do-not-send=3D"true">https://github.com/viboes/std-make/tre=
e/master/test/ordinal</a><br>
        </font></p>
      <p><br>
      </p>
      <dt><font size=3D"+1"><br>
          <span class=3D"term"><a href=3D"http://drdobbs.com/cpp/184401797"
              target=3D"_top" moz-do-not-send=3D"true"><span class=3D"bold"=
><strong></strong></span></a></span></font></dt>
      <font size=3D"+1"> <dt><span class=3D"term"><a
              href=3D"http://drdobbs.com/cpp/184401797" target=3D"_top"
              moz-do-not-send=3D"true"><span class=3D"bold"><strong>Enumera=
tions</strong></span></a></span></dt>
        <dd>
          <p> Herb Sutter and Jim Hyslop </p>
        </dd>
        <dt><span class=3D"term"><a
href=3D"http://www.eetimes.com/discussion/programming-pointers/4024556/Enum=
erations-Q--A"
              target=3D"_top" moz-do-not-send=3D"true"><span class=3D"bold"=
><strong>Enumerations
                  Q &amp; A</strong></span></a></span></dt>
        <dd>
          <p> Dan Saks </p>
        </dd>
        <dt><span class=3D"term"><a
              href=3D"http://www.two-sdg.demon.co.uk/curbralan/papers/FlagW=
aiving.pdf"
              target=3D"_top" moz-do-not-send=3D"true"><span class=3D"bold"=
><strong>Flag
                  Waiving</strong></span></a></span></dt>
        <dd>
          <p> Kevlin Henney </p>
        </dd>
        <dt><br>
        </dt>
        <dt><br>
          <span class=3D"term"><a
href=3D"https://htmlpreview.github.io/?https://github.com/viboes/enums/blob=
/master/libs/enums/doc/html/index.html#Ada"
              target=3D"_top" moz-do-not-send=3D"true"><span class=3D"bold"=
><strong></strong></span></a></span></dt>
        <dt>[ADA] <a class=3D"moz-txt-link-freetext"
            href=3D"https://en.wikibooks.org/wiki/Ada_Programming/Types/Enu=
meration"
            moz-do-not-send=3D"true">https://en.wikibooks.org/wiki/Ada_Prog=
ramming/Types/Enumeration</a>
          and <a class=3D"moz-txt-link-freetext"
            href=3D"https://en.wikibooks.org/wiki/Ada_Programming/Types/arr=
ay"
            moz-do-not-send=3D"true">https://en.wikibooks.org/wiki/Ada_Prog=
ramming/Types/array</a><br>
        </dt>
      </font>
      <p><br>
      </p>
      <p><font size=3D"+1"> </font></p>
      -- <br>
      You received this message because you are subscribed to the Google
      Groups "ISO C++ Standard - Future Proposals" group.<br>
      To unsubscribe from this group and stop receiving emails from it,
      send an email to <a
        href=3D"mailto:std-proposals+unsubscribe@isocpp.org"
        moz-do-not-send=3D"true">std-proposals+unsubscribe@isocpp.org</a>.<=
br>
      To post to this group, send email to <a
        href=3D"mailto:std-proposals@isocpp.org" moz-do-not-send=3D"true">s=
td-proposals@isocpp.org</a>.<br>
      To view this discussion on the web visit <a
href=3D"https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/7817d6=
33-c584-cbc6-38c2-37c9fbe5282e%40wanadoo.fr?utm_medium=3Demail&amp;utm_sour=
ce=3Dfooter"
        moz-do-not-send=3D"true">https://groups.google.com/a/isocpp.org/d/m=
sgid/std-proposals/7817d633-c584-cbc6-38c2-37c9fbe5282e%40wanadoo.fr</a>.<b=
r>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>

<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/162b54ad-253b-cb47-8089-d66bc19510b3%=
40wanadoo.fr?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/162b54ad-253b-cb47-8089-d66bc19510b3=
%40wanadoo.fr</a>.<br />

--------------BF69E17238354164ACEA60F2--

.