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 -> int <br>
</p>
<p>value : int ->O</p>
<p>size<O> : ->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<=
1,12><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<T,O>, ordinal_set<O> and
ordinal_range<O>?<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
& 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" 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 -> int <br>
</p>
<p>value : int ->O</p>
<p>size<O> : ->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><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<T,O>, ordinal_set<O> and
ordinal_range<O>?<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 & 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&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" 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--
.