Topic: Draft proposal of std::upto, std::index, std::enumerate
Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Fri, 22 Feb 2019 19:56:53 +1000
Raw View
--0000000000000f02fb0582789dde
Content-Type: multipart/alternative; boundary="0000000000000f02f90582789ddc"
--0000000000000f02f90582789ddc
Content-Type: text/plain; charset="UTF-8"
Please find attached 2-page first draft of:
Proposal of std::upto, std::index and std::enumerate
Feedback appreciated.
-Andrew.
--
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 email 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/CAB%2B4KH%2B2Z2Hy%2BvRX-tksSRDzkHkn7bt9tkOgjz8nqUn3ABzk%3Dg%40mail.gmail.com.
--0000000000000f02f90582789ddc
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Please find attached 2-page first draft of:<div><br></div>=
<div>=C2=A0 =C2=A0Proposal of std::upto, std::index and std::enumerate</div=
><div><br></div><div>Feedback appreciated.</div><div>=C2=A0 -Andrew.</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" 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/CAB%2B4KH%2B2Z2Hy%2BvRX-tksSRDzkHkn7b=
t9tkOgjz8nqUn3ABzk%3Dg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfoo=
ter">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAB%2B4KH=
%2B2Z2Hy%2BvRX-tksSRDzkHkn7bt9tkOgjz8nqUn3ABzk%3Dg%40mail.gmail.com</a>.<br=
/>
--0000000000000f02f90582789ddc--
--0000000000000f02fb0582789dde
Content-Type: application/pdf;
name="Proposal of std__upto, std__index and std__enumerate.pdf"
Content-Disposition: attachment;
filename="Proposal of std__upto, std__index and std__enumerate.pdf"
Content-Transfer-Encoding: base64
Content-ID: <f_jsfvqzop0>
X-Attachment-Id: f_jsfvqzop0
JVBERi0xLjUKJb/3ov4KNCAwIG9iago8PCAvTGluZWFyaXplZCAxIC9MIDYxNDI4IC9IIFsgNzY0
IDE0NyBdIC9PIDggL0UgNTg1MzkgL04gMiAvVCA2MTE0MiA+PgplbmRvYmoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKNSAwIG9iago8PCAv
VHlwZSAvWFJlZiAvTGVuZ3RoIDY0IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9EZWNvZGVQYXJtcyA8
PCAvQ29sdW1ucyA0IC9QcmVkaWN0b3IgMTIgPj4gL1cgWyAxIDIgMSBdIC9JbmRleCBbIDQgMjYg
XSAvSW5mbyAxNyAwIFIgL1Jvb3QgNiAwIFIgL1NpemUgMzAgL1ByZXYgNjExNDMgICAgICAgICAg
ICAgICAgIC9JRCBbPDVhOWMxNjk4ZDFlYzg2ZWI1NjAwOTZlZDRiZjhiYjcyPjw1YTljMTY5OGQx
ZWM4NmViNTYwMDk2ZWQ0YmY4YmI3Mj5dID4+CnN0cmVhbQp4nGNiZOBnYGJgOAkkmD6BWEZAgnEy
iOAEElxqQEJyOoirDiQCr4NY04BEqjaI1cfAxKiQB9LGwEgmAQCbeAdTCmVuZHN0cmVhbQplbmRv
YmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKNiAwIG9iago8PCAvUGFnZXMgMjMgMCBSIC9U
eXBlIC9DYXRhbG9nID4+CmVuZG9iago3IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9T
IDQ4IC9MZW5ndGggNzAgPj4Kc3RyZWFtCnicY2BgYAKiPwzMDAxcOgwCDFAAZjMxsACZLA+ufWBg
MEhvAFFIgBOKGRg5GfgZGFRK9hQwvvx5QLlwIkMrG1AYANzjDV8KZW5kc3RyZWFtCmVuZG9iago4
IDAgb2JqCjw8IC9Bbm5vdHMgWyAyMiAwIFIgXSAvQ29udGVudHMgOSAwIFIgL01lZGlhQm94IFsg
MCAwIDYxMiA3OTIgXSAvUGFyZW50IDIzIDAgUiAvUmVzb3VyY2VzIDw8IC9FeHRHU3RhdGUgPDwg
L0czIDE4IDAgUiA+PiAvRm9udCA8PCAvRjQgMTkgMCBSIC9GNSAyMCAwIFIgL0Y2IDIxIDAgUiA+
PiAvUHJvY1NldHMgWyAvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJIF0gPj4gL1N0
cnVjdFBhcmVudHMgMCAvVHlwZSAvUGFnZSA+PgplbmRvYmoKOSAwIG9iago8PCAvRmlsdGVyIC9G
bGF0ZURlY29kZSAvTGVuZ3RoIDI1MjYgPj4Kc3RyZWFtCnic7Z1bb/S2EYbv/Sv2ukAUng9AEcB2
7Fy3+ID+gLYJUCAFkv5/oNxd7S5p6bE5a0lrJ/4MJIZocnh4OfPOiBzpnSo/3+nyn5jN7p+/3v12
t38StDk8+P3fd//4y+6/5ekQ/eFvT/8vf6p3+5+//7Q7/vL7L3ff/2R3v/zv0ELSYaeVD/smfn7l
idHaHJ/8rfzU0vVg/Ps74FdoPIdD6zmoaxsfm3r4dvf9s9tpNwSfy7+0+/bznb6sidp9+/WuSPtO
6/Lrv3Z/VcrEH3bf/nOn1eCTM9HZ3anEm0NJGrQvfx7TucCFQ0EcrEna+PNzZQ/P3aCiztHHc4HV
Yhn6R2iLhRwL8hCjD8qZi4yH+e5e+fzp28rro7MZVLalcrVM47BXF34Ahz2Dw9GcJlg3H2F53APV
IAh4PzaVkgrOvwcbPA5NGI/SXjmckntCP2P5JD17E4z2HZOljkLMYFSKUVX9clTlR8A5yqj3vVMw
jjK/l5V6PqH2AD7/BvhMtEPO1uQag0qf2hhUCHE32PJvN6S9Kn3xpOjULpDPymnmydhZiKhczVMN
kaaggUgMdhYibY0GIj7Pb6esZ9eobanGQVLazuKgrdKBg7YC6H9zhEGZ+xRTmcMKg/cwtw1qnTLz
qK1quMfDc1uUXtDBhUvBc1VgKwjq+RkkI/bWzPZi2fk8aO2smceyOvxdgfDxl17kzrZqzq2uaxtc
iEOIOqVmSFsaJn+9YUKF3iDK5fnd2upBNBqAKWzpCkv2LB6GF1sytBhUwz8KGaFJtH5ZaJSafV+P
+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
N2p7azmzWhs1ansvJGbQ8ZYX2j7PhCc/kfhZY9HvQmEIdMv9fueH/d7/lPw//d6H+079br+635OC
nysE9ZkRwewpJL1kUiKrI4UU50yG9HfkSSWzr5IUTCOBzmBGu8Csx8piGFvExt8aLjk6xvJwoJM8
1Onwl/eoXNZ37ZUI/je5DqN+J9X8V6omPGYNEs/DbpbgXn8D5061SGVuZHN0cmVhbQplbmRvYmoK
MSAwIG9iago8PCAvQ29udGVudHMgMiAwIFIgL01lZGlhQm94IFsgMCAwIDYxMiA3OTIgXSAvUGFy
ZW50IDIzIDAgUiAvUmVzb3VyY2VzIDw8IC9FeHRHU3RhdGUgPDwgL0czIDE4IDAgUiA+PiAvRm9u
dCA8PCAvRjQgMTkgMCBSID4+IC9Qcm9jU2V0cyBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VD
IC9JbWFnZUkgXSA+PiAvU3RydWN0UGFyZW50cyAxIC9UeXBlIC9QYWdlID4+CmVuZG9iagoyIDAg
b2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMjMwOCA+PgpzdHJlYW0KeJztndtu
GzcQhu/1FLoukA3P5AJFgdixc93CQB+gbQIUSIGm7w90pV1bZLSfxJFXXMdwDTSJaHLI4XD4c07S
WzX8vNPD/2Jvtn983fy72X0StNl/8O2vze8/bf8ZPu2i3//u+Oe76bf1dvfz26ft+JdvXzbvP9nt
l/+GQbTyYZt0GP8yDPSZPlT7T4zWZvzk1+Enn4bujF9qJv5KJLQ3exJ9UM+gMI1387B5f++2JnQh
bB8+b/Rhl9T24eumD8M/jHLbhz+3Pytl4i/bh783uh9IKNPvfmf/uUvj565LxvXWH1p8GFtsZ03S
xh+63O4bfNcbo4PLxvqAY+l9y93DVZesY+r6kIau+cqVXZD2sLbg++G/xDy3caJsPzxyMFlrQjTf
cz112mutYnpqmCbrOhV1H3089Bh3I36/Gd7ASBPLZxpgpGlb7cCUoIftOzREGAlX4f20ipRUcL6i
B9JQ98AQ5hStAznCQznpdLkBZxXF66jacmPneRiGgzG78LyhWLgBUYDPVU9CZd3ZqU4q5HgJNFOv
xjNmOqNSjCrNsqmYUyGdMdhZ6Sx6FNR7LTuU2SpOTNYSA+8zBgYX5jlbNND5hj0tBLAQgiQTApam
njaP+ET64wQDYdU8KTlj74CxwCeWWRIb3AnguP4IHbDBw1xz+asSDto6dZNt3Q7wnBM/VE7OQ4db
OL5ibYZKKDZDDGEAM9bZEbI8AYfmkMVHiWgWtxRdeIUI5j2wAYfiC28CWKrzyZnoKu76Qhfl1Fnn
IHVURsUhKMZCCHILPeTYhJeOGItoyKUBESHpF6na1qqGUfkdnamREgbQbV+sLhuJKLDavgH9QqCo
hhk18CMX5UIH042+HjR43QiKKODy4EYiydBaiuyxwdxCA96SxCXiN2KPmgdpMVC/FBCrwZ/5AcpG
Msro86T9DUz1x2ce4TNkKq3gNAqrXrEx7VBbr7oQdUoFdmqO2mKFoSm/ggowgPCB7vYLrCSeaCCk
QvwgnxWaswgBMgxCuIPcFdv3eOVW2iA3yzETa3YQUZX0lNfZXJYCTxWWqRJHNFXZ+YwqNDazboGH
sOBOwFtHbJ6RYq0LLIQ5jVKI4dYWAwm0fPFI4seEGPSgSecWsDi83Yhyw4vYO9Up7YMtrsPmF3G/
FmWrr+JrkoOGGlD5PJfLgkaK5UxW7OiSW2c+UANe5zU6tVh4flMVkAixEhpP0IeCOhXta6B26twJ
uR1G7PBhEvT2IBJX93OhRw6tG9Qgd0uIvTRgQBODgOWuVewhhkTEJKkUP89qWGAroYw1MCa9ag+X
2Ju+IjfkQkMefqGB64d0xoXURWW1LZBVc0xnX4QzDlEHxhVhD36AyQOIxGarBSGoPKyJaXwExMVc
lArD8+x1JYCSmnTFj/TFAo7q9qjiNhRbadBuJA5pknrdGIjRGshyxLas68ObpaJo+Mpb0nconu3H
81tRt6f0BCk844XXdy0MsBhiZa5KTaxiJ5fUFbwUYfn5Wcxg+jyfvFPn4w0mLrWAVFHrTgXjC2DV
HNId4qvEbp51vVJV0bVXwilIgmO45HFJhGb1khkLp0XE7FIs9Cii13Emn04ScdpPRO2U8hG7GHuf
GW7GycwkdnD6iJOnjzwakZ3yg0I6ctXN9EAajqY1iYiAyCSGnNUy0zLt3jEVbaCh6BF95k25zRqc
O3pWmd3ZdCkc+WumaRl1ZAAe15iOFfXUxWsDVOwRGJ3rorElwlrK/arrcgtrKfdrZmJXPlPO6873
Y0jv4Wi1vnJ2rFqJckglvyV+pAtMBXTfYHgEPn9rsFtjlxSTuGt3PynXDcrNpmJzm4tVWouyV+ns
/sltXyyf6KVbzval76cG73tlIJS5ELea2IA6r2ULpYDHpohyLRaIZk1iiWmIEL17fMQchLH5MTDp
7E6Jw/cQ4y8ZKCcnTvkbC4qPGtFuP0BtP7y+TUWDONRRnlUyXStDj37ATqkiqEBuFOf9ELsD6lJ6
K1zQLRyT8pAJqUlZauNe0p9IxiFkLFn8aSAKMcIsDmJGkTSW+nBe+MW5EWx0I83CR5XczWt6lZdL
6C02IzcfkDkT1Q15hAjrLLepRs9T4FxYklnMbQ3qIJqpj9nq7p4mVWakoHl3GqpJeGayAxMn4GJW
Ay6rPYV9eHs5vJqXQ8g1VZFrLK3HIb8TxT5nqVex4WPGKv1o7varWRN8ehGPGXmtmguK8VCEFj5y
ninpdQoGrXBylsjzneRPLApdrXph5Q+QqgcWvhvogVWVwM4Z7/Q0QQXzEt9XTUub1ITZ0D4suGZx
DIwwDAXXLD8Q1JAhWC63sBKAdcF2oyfHr2Z+DqtZ/IJ5g69v8PUNvhJ8Das9aYN7GfD19QeJv4Hk
0yC5ohxRcfNDNZULMHLeQVrwiLGfOBz3Kgj5OmCx5rygA6ImTvf6/gfErwh4KXl9PTfDC3xHrJcm
hiby80mKpb277VOoyCJG/YYNWPOyRoXmtIvHU1V09xSBONNj5IffpcANMK0iRt0+CkHvTbDhcG/Z
KQRPd27onnzmKol0KrgPSu2ldb1axZ3HNOHE1RwQ4eCAENcPvwCQySPS5TiGyiQsWfWgptDvtWL0
l6vLVRxok8GoQgXkPRpaVowN3RQkG1bzAoTVjDrxyaiTe3brIm6wAfcVG1hw30J3ZaG7Tc6MUV1w
al/tKF7HKng6UyTu2vLbephQtE5lUuv5+0Qo8wK/aIRzNTi9A1Mypn2aa8HMDx4Mv+kEMz+KPI66
5WNDweMiwYOTMpZMuUMpscZ1evwCloOsNNSt2uz+Fft+JK171460czlpZVOOdAsDkVRZiQs9Vb2S
C7iFGhfhYc07uQBVuDos4s6QrkkRdzLgULK4JjOKBhuEDvB5lZ+28KG1u4SG/e76KRj9IO3Nz3jS
q53xJ9JvdXcXCWlpXdkvO8tsEKsoY1v5bQK5gkmDLpilUVnDZKk6/Ww5QatlLtHorKuyHtfVPMjt
nDWk6yjQrSWtrkd+AnmBicUq5qK7VvhdA+LyD8LvLLigIAVVml+s/ND1q9W8wEJsy9VqXktiWpb8
D7EbFrov+X8AAK3NRsnOU/4fqRuVAGVuZHN0cmVhbQplbmRvYmoKMyAwIG9iago8PCAvVHlwZSAv
WFJlZiAvTGVuZ3RoIDI1IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9EZWNvZGVQYXJtcyA8PCAvQ29s
dW1ucyA0IC9QcmVkaWN0b3IgMTIgPj4gL1cgWyAxIDIgMSBdIC9TaXplIDQgL0lEIFs8NWE5YzE2
OThkMWVjODZlYjU2MDA5NmVkNGJmOGJiNzI+PDVhOWMxNjk4ZDFlYzg2ZWI1NjAwOTZlZDRiZjhi
YjcyPl0gPj4Kc3RyZWFtCnicY2IAAibGJ6sZmBgYHwAJTh8GABr5As8KZW5kc3RyZWFtCmVuZG9i
agogICAgICAgICAgICAgICAgCnN0YXJ0eHJlZgoyMTYKJSVFT0YK
--0000000000000f02fb0582789dde--
.
Author: Jake Arkinstall <jake.arkinstall@gmail.com>
Date: Fri, 22 Feb 2019 10:51:01 +0000
Raw View
--00000000000085cf9e0582795e05
Content-Type: text/plain; charset="UTF-8"
C++ has been needing things like this for a long time, to the point that
I'm sure many of us have it implemented in some form or another in our own
libraries (especially those of us with python cross-overs). I was
particularly shocked* when I finally got around to reading an overview of
the behemoth that is the ranges proposal and it didn't have zip
functionality, enumerate, and range, because everything else about it
screams "this is what python does right so let's improve on that". There
are MANY things I hate about python, but making complicated loops look
effortless is what it excels at (and what we're still trying to figure out).
I think std::upto is an attempt at making python's range(end), range(start,
end), range(start, end, increment), but looking unlike a python rip-off by
removing the good name and the broader functionality. Am I hitting the nail
on the head with that? In my opinion, a range function that acts just like
python's would be better, and might even give us an opportunity to make a
transition from python to C++ easier. Not that this is a priority, but it's
an undeniable benefit.
With regards to the issue of fixing just the index to const - it can be
done by strong typing the index, declaring the underlying value as const,
setting it only in the constructor, providing a conversion to (but not
from, except for by constructor) size_t. Perhaps delete the copy
constructor, make the constructor private but with a friend function to a
factory, there are many ways around the problem.
* not to, in any way, imply that the ranges proposal wasn't brilliant. But
there seemed to be an underlying assumption in the community that it would
bring these things along with it. Perhaps because it was so big that many
people didn't read it. Evidence for this can be found whenever someone asks
about adding these things to the language on Stack Overflow etc - there's
always a comment saying "ranges will give us this"
On Fri, 22 Feb 2019, 09:57 Andrew Tomazos, <andrewtomazos@gmail.com> wrote:
> Please find attached 2-page first draft of:
>
> Proposal of std::upto, std::index and std::enumerate
>
> Feedback appreciated.
> -Andrew.
>
> --
> 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
> email 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/CAB%2B4KH%2B2Z2Hy%2BvRX-tksSRDzkHkn7bt9tkOgjz8nqUn3ABzk%3Dg%40mail.gmail.com
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAB%2B4KH%2B2Z2Hy%2BvRX-tksSRDzkHkn7bt9tkOgjz8nqUn3ABzk%3Dg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
--
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 email 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/CAC%2B0CCPCYrFAZFZTuChcdc7yhe6dUnWSAXq2VpUso-s4O8Yt4w%40mail.gmail.com.
--00000000000085cf9e0582795e05
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"auto">C++ has been needing things like this for a long time, to=
the point that I'm sure many of us have it implemented in some form or=
another in our own libraries (especially those of us with python cross-ove=
rs). I was particularly shocked* when I finally got around to reading an ov=
erview of the behemoth that is the ranges proposal and it didn't have z=
ip functionality, enumerate, and range, because everything else about it sc=
reams "this is what python does right so let's improve on that&quo=
t;. There are MANY things I hate about python, but making complicated loops=
look effortless is what it excels at (and what we're still trying to f=
igure out).<div dir=3D"auto"><br></div><div dir=3D"auto">I think std::upto =
is an attempt at making python's range(end), range(start, end), range(s=
tart, end, increment), but looking unlike a python rip-off by removing the =
good name and the broader functionality. Am I hitting the nail on the head =
with that? In my opinion, a range function that acts just like python's=
would be better, and might even give us an opportunity to make a transitio=
n from python to C++ easier. Not that this is a priority, but it's an u=
ndeniable benefit.</div><div dir=3D"auto"><br></div><div dir=3D"auto">With =
regards to the issue of fixing just the index to const - it can be done by =
strong typing the index, declaring the underlying value as const, setting i=
t only in the constructor, providing a conversion to (but not from, except =
for by constructor) size_t. Perhaps delete the copy constructor, make the c=
onstructor private but with a friend function to a factory, there are many =
ways around the problem.</div><div dir=3D"auto"><br></div><div dir=3D"auto"=
>* not to, in any way, imply that the ranges proposal wasn't brilliant.=
But there seemed to be an underlying assumption in the community that it w=
ould bring these things along with it. Perhaps because it was so big that m=
any people didn't read it. Evidence for this can be found whenever some=
one asks about adding these things to the language on Stack Overflow etc - =
there's always a comment saying "ranges will give us this"=C2=
=A0</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gma=
il_attr">On Fri, 22 Feb 2019, 09:57 Andrew Tomazos, <<a href=3D"mailto:a=
ndrewtomazos@gmail.com">andrewtomazos@gmail.com</a>> wrote:<br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #=
ccc solid;padding-left:1ex"><div dir=3D"ltr">Please find attached 2-page fi=
rst draft of:<div><br></div><div>=C2=A0 =C2=A0Proposal of std::upto, std::i=
ndex and std::enumerate</div><div><br></div><div>Feedback appreciated.</div=
><div>=C2=A0 -Andrew.</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" 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" target=3D"_=
blank" rel=3D"noreferrer">std-proposals+unsubscribe@isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank" rel=3D"noreferrer">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/CAB%2B4KH%2B2Z2Hy%2BvRX-tksSRDzkHkn7b=
t9tkOgjz8nqUn3ABzk%3Dg%40mail.gmail.com?utm_medium=3Demail&utm_source=
=3Dfooter" target=3D"_blank" rel=3D"noreferrer">https://groups.google.com/a=
/isocpp.org/d/msgid/std-proposals/CAB%2B4KH%2B2Z2Hy%2BvRX-tksSRDzkHkn7bt9tk=
Ogjz8nqUn3ABzk%3Dg%40mail.gmail.com</a>.<br>
</blockquote></div>
<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/CAC%2B0CCPCYrFAZFZTuChcdc7yhe6dUnWSAX=
q2VpUso-s4O8Yt4w%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAC%2B0CCPCYrFA=
ZFZTuChcdc7yhe6dUnWSAXq2VpUso-s4O8Yt4w%40mail.gmail.com</a>.<br />
--00000000000085cf9e0582795e05--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Fri, 22 Feb 2019 07:05:43 -0800 (PST)
Raw View
------=_Part_1012_569505909.1550847943610
Content-Type: multipart/alternative;
boundary="----=_Part_1013_1257627270.1550847943610"
------=_Part_1013_1257627270.1550847943610
Content-Type: text/plain; charset="UTF-8"
Since all of these are range-based constructs, presumably using the range
concepts, they should live in the `ranges` namespace along with the rest.
Also, `ranges::iota` provides basic counted range functionality, so they
should be specified in terms of them. Your `upto(N)` is really `iota(0,
N)`, and so forth. That's not to say we shouldn't have the function (though
I would prefer `irange` or `crange`, with overloads along the line of what
Jake discussed).
--
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 email 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/116685bc-be33-4ab3-a441-8293c02cae1a%40isocpp.org.
------=_Part_1013_1257627270.1550847943610
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Since all of these are range-based constructs, presum=
ably using the range concepts, they should live in the `ranges` namespace a=
long with the rest.</div><div><br></div><div>Also, `ranges::iota` provides =
basic counted range functionality, so they should be specified in terms of =
them. Your `upto(N)` is really `iota(0, N)`, and so forth. That's not t=
o say we shouldn't have the function (though I would prefer `irange` or=
`crange`, with overloads along the line of what Jake discussed).<br></div>=
</div>
<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/116685bc-be33-4ab3-a441-8293c02cae1a%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/116685bc-be33-4ab3-a441-8293c02cae1a=
%40isocpp.org</a>.<br />
------=_Part_1013_1257627270.1550847943610--
------=_Part_1012_569505909.1550847943610--
.
Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Sat, 23 Feb 2019 01:22:01 +1000
Raw View
--000000000000d7b20605827d27fa
Content-Type: text/plain; charset="UTF-8"
Thanks Nicol for the suggestion. The premise of the proposal is that these
particular use cases are so common we should have a short-hand for them.
To me a short-hand means both a short name and no subnamespace.
On Sat, Feb 23, 2019 at 1:05 AM Nicol Bolas <jmckesson@gmail.com> wrote:
> Since all of these are range-based constructs, presumably using the range
> concepts, they should live in the `ranges` namespace along with the rest.
>
> Also, `ranges::iota` provides basic counted range functionality, so they
> should be specified in terms of them. Your `upto(N)` is really `iota(0,
> N)`, and so forth. That's not to say we shouldn't have the function (though
> I would prefer `irange` or `crange`, with overloads along the line of what
> Jake discussed).
>
> --
> 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
> email 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/116685bc-be33-4ab3-a441-8293c02cae1a%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/116685bc-be33-4ab3-a441-8293c02cae1a%40isocpp.org?utm_medium=email&utm_source=footer>
> .
>
--
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 email 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/CAB%2B4KH%2BaxR01Z07cu_WB_K9D%2BRNeKwU4Gm%3DVub%3D3E1Ts%2Bc8XEg%40mail.gmail.com.
--000000000000d7b20605827d27fa
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Thanks Nicol for the suggestion.=C2=A0 The premise of=
the proposal is that these particular use cases are so common we should ha=
ve a short-hand for them.=C2=A0 To me a short-hand means both a short name =
and no subnamespace.</div><br><div class=3D"gmail_quote"><div dir=3D"ltr" c=
lass=3D"gmail_attr">On Sat, Feb 23, 2019 at 1:05 AM Nicol Bolas <<a href=
=3D"mailto:jmckesson@gmail.com">jmckesson@gmail.com</a>> wrote:<br></div=
><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border=
-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Si=
nce all of these are range-based constructs, presumably using the range con=
cepts, they should live in the `ranges` namespace along with the rest.</div=
><div><br></div><div>Also, `ranges::iota` provides basic counted range func=
tionality, so they should be specified in terms of them. Your `upto(N)` is =
really `iota(0, N)`, and so forth. That's not to say we shouldn't h=
ave the function (though I would prefer `irange` or `crange`, with overload=
s along the line of what Jake discussed).<br></div></div>
<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" target=3D"_=
blank">std-proposals+unsubscribe@isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">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/116685bc-be33-4ab3-a441-8293c02cae1a%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/116685bc-be33-=
4ab3-a441-8293c02cae1a%40isocpp.org</a>.<br>
</blockquote></div></div>
<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/CAB%2B4KH%2BaxR01Z07cu_WB_K9D%2BRNeKw=
U4Gm%3DVub%3D3E1Ts%2Bc8XEg%40mail.gmail.com?utm_medium=3Demail&utm_source=
=3Dfooter">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAB=
%2B4KH%2BaxR01Z07cu_WB_K9D%2BRNeKwU4Gm%3DVub%3D3E1Ts%2Bc8XEg%40mail.gmail.c=
om</a>.<br />
--000000000000d7b20605827d27fa--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Fri, 22 Feb 2019 07:47:12 -0800 (PST)
Raw View
------=_Part_1025_95762876.1550850432905
Content-Type: multipart/alternative;
boundary="----=_Part_1026_1907856870.1550850432905"
------=_Part_1026_1907856870.1550850432905
Content-Type: text/plain; charset="UTF-8"
On Friday, February 22, 2019 at 10:22:17 AM UTC-5, Andrew Tomazos wrote:
>
> Thanks Nicol for the suggestion. The premise of the proposal is that
> these particular use cases are so common we should have a short-hand for
> them. To me a short-hand means both a short name and no subnamespace.
>
However common it may be, all the range stuff has to go in the `ranges`
namespace. To put it elsewhere would suggest that you can use them with
non-`std::ranges` algorithms and such. Which you very much cannot, due in
part to them returning values rather than references, which isn't allowed
for legacy-ForwardIterators and beyond.
Also in a modular world, we shouldn't need to consider namespaces when we
want "short-hand names", since `using` declarations no longer have the
chance to leak to external code.
--
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 email 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/e4ce8e6d-d95e-4d2e-9405-475a4d393de7%40isocpp.org.
------=_Part_1026_1907856870.1550850432905
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Friday, February 22, 2019 at 10:22:17 AM UTC-5, Andrew =
Tomazos wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-l=
eft: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"=
><div>Thanks Nicol for the suggestion.=C2=A0 The premise of the proposal is=
that these particular use cases are so common we should have a short-hand =
for them.=C2=A0 To me a short-hand means both a short name and no subnamesp=
ace.</div></div></blockquote><div><br></div><div>However common it may be, =
all the range stuff has to go in the `ranges` namespace. To put it elsewher=
e would suggest that you can use them with non-`std::ranges` algorithms and=
such. Which you very much cannot, due in part to them returning values rat=
her than references, which isn't allowed for legacy-ForwardIterators an=
d beyond.</div><div><br></div><div>Also in a modular world, we shouldn'=
t need to consider namespaces when we want "short-hand names", si=
nce `using` declarations no longer have the chance to leak to external code=
..<br></div></div>
<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/e4ce8e6d-d95e-4d2e-9405-475a4d393de7%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/e4ce8e6d-d95e-4d2e-9405-475a4d393de7=
%40isocpp.org</a>.<br />
------=_Part_1026_1907856870.1550850432905--
------=_Part_1025_95762876.1550850432905--
.
Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Sat, 23 Feb 2019 03:30:24 +1000
Raw View
--000000000000eff95305827ef23c
Content-Type: text/plain; charset="UTF-8"
On Sat, Feb 23, 2019 at 1:47 AM Nicol Bolas <jmckesson@gmail.com> wrote:
> On Friday, February 22, 2019 at 10:22:17 AM UTC-5, Andrew Tomazos wrote:
>>
>> Thanks Nicol for the suggestion. The premise of the proposal is that
>> these particular use cases are so common we should have a short-hand for
>> them. To me a short-hand means both a short name and no subnamespace.
>>
>
> However common it may be, all the range stuff has to go in the `ranges`
> namespace. To put it elsewhere would suggest that you can use them with
> non-`std::ranges` algorithms and such. Which you very much cannot, due in
> part to them returning values rather than references, which isn't allowed
> for legacy-ForwardIterators and beyond.
>
It's not clear what you mean by using them the proposed functions with
non-ranges algorithms. My expectation is that they will be used
exclusively with ranged-for. Can you provide an example of how they might
be (mis)used with legacy algorithms?
--
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 email 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/CAB%2B4KHKV6NnWfo1VujADzh%3DwR7wnLptwUjvNw2zZwjfuceHPRw%40mail.gmail.com.
--000000000000eff95305827ef23c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr">On Sat, Feb 23, 2019 at 1:47 AM Nicol Bol=
as <<a href=3D"mailto:jmckesson@gmail.com">jmckesson@gmail.com</a>> w=
rote:<br></div><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote"=
style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div dir=3D"ltr">On Friday, February 22, 2019 at 10:22:17 =
AM UTC-5, Andrew Tomazos wrote:<blockquote class=3D"gmail_quote" style=3D"m=
argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left=
:1ex"><div dir=3D"ltr"><div>Thanks Nicol for the suggestion.=C2=A0 The prem=
ise of the proposal is that these particular use cases are so common we sho=
uld have a short-hand for them.=C2=A0 To me a short-hand means both a short=
name and no subnamespace.</div></div></blockquote><div><br></div><div>Howe=
ver common it may be, all the range stuff has to go in the `ranges` namespa=
ce. To put it elsewhere would suggest that you can use them with non-`std::=
ranges` algorithms and such. Which you very much cannot, due in part to the=
m returning values rather than references, which isn't allowed for lega=
cy-ForwardIterators and beyond.</div></div></blockquote><div><br></div><div=
>It's not clear what you mean by using them the proposed functions with=
non-ranges algorithms.=C2=A0 My expectation is that they will be used excl=
usively with ranged-for.=C2=A0 Can you provide an example of how they might=
be (mis)used with legacy algorithms?</div><div><br></div></div></div>
<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/CAB%2B4KHKV6NnWfo1VujADzh%3DwR7wnLptw=
UjvNw2zZwjfuceHPRw%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter"=
>https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAB%2B4KHKV6N=
nWfo1VujADzh%3DwR7wnLptwUjvNw2zZwjfuceHPRw%40mail.gmail.com</a>.<br />
--000000000000eff95305827ef23c--
.
Author: Corentin <corentin.jabot@gmail.com>
Date: Fri, 22 Feb 2019 07:56:28 -1000
Raw View
--0000000000002d1d7405827f5049
Content-Type: text/plain; charset="UTF-8"
The same thing that might prevent zip to move forward in 20 would block
enumerate.
enumerate would need to return a pair of some kind and that implies
modifying pair to support const assignment which we haven't done yet.
If by some miracle we get zip in 20, I would love to see enumerate as a
late minute addition.
On Fri, 22 Feb 2019 at 07:30 Andrew Tomazos <andrewtomazos@gmail.com> wrote:
> On Sat, Feb 23, 2019 at 1:47 AM Nicol Bolas <jmckesson@gmail.com> wrote:
>
>> On Friday, February 22, 2019 at 10:22:17 AM UTC-5, Andrew Tomazos wrote:
>>>
>>> Thanks Nicol for the suggestion. The premise of the proposal is that
>>> these particular use cases are so common we should have a short-hand for
>>> them. To me a short-hand means both a short name and no subnamespace.
>>>
>>
>> However common it may be, all the range stuff has to go in the `ranges`
>> namespace. To put it elsewhere would suggest that you can use them with
>> non-`std::ranges` algorithms and such. Which you very much cannot, due in
>> part to them returning values rather than references, which isn't allowed
>> for legacy-ForwardIterators and beyond.
>>
>
> It's not clear what you mean by using them the proposed functions with
> non-ranges algorithms. My expectation is that they will be used
> exclusively with ranged-for. Can you provide an example of how they might
> be (mis)used with legacy algorithms?
>
> --
> 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
> email 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/CAB%2B4KHKV6NnWfo1VujADzh%3DwR7wnLptwUjvNw2zZwjfuceHPRw%40mail.gmail.com
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAB%2B4KHKV6NnWfo1VujADzh%3DwR7wnLptwUjvNw2zZwjfuceHPRw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
--
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 email 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/CA%2BOm%2BSiuP4w0c0-P3FQWk7bmPR1nNyU3n_8KrgEY_sgfvzU8XQ%40mail.gmail.com.
--0000000000002d1d7405827f5049
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>The same thing that might prevent zip to move forward=
in 20 would block enumerate.</div><div>enumerate would need to return a pa=
ir of some kind and that implies modifying pair to support const assignment=
which we haven't done yet.</div><div>If by some miracle we get zip in =
20, I would love to see enumerate as a late minute addition.=C2=A0</div><di=
v><br></div><div><br></div><div><br></div><div><br></div><div><br></div></d=
iv><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On =
Fri, 22 Feb 2019 at 07:30 Andrew Tomazos <<a href=3D"mailto:andrewtomazo=
s@gmail.com">andrewtomazos@gmail.com</a>> wrote:<br></div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;p=
adding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr">On Sat, Feb 23, 2019 at =
1:47 AM Nicol Bolas <<a href=3D"mailto:jmckesson@gmail.com" target=3D"_b=
lank">jmckesson@gmail.com</a>> wrote:<br></div></div><div dir=3D"ltr"><d=
iv class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:=
0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">=
<div dir=3D"ltr">On Friday, February 22, 2019 at 10:22:17 AM UTC-5, Andrew =
Tomazos wrote:<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px=
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D=
"ltr"><div>Thanks Nicol for the suggestion.=C2=A0 The premise of the propos=
al is that these particular use cases are so common we should have a short-=
hand for them.=C2=A0 To me a short-hand means both a short name and no subn=
amespace.</div></div></blockquote><div><br></div><div>However common it may=
be, all the range stuff has to go in the `ranges` namespace. To put it els=
ewhere would suggest that you can use them with non-`std::ranges` algorithm=
s and such. Which you very much cannot, due in part to them returning value=
s rather than references, which isn't allowed for legacy-ForwardIterato=
rs and beyond.</div></div></blockquote><div><br></div></div></div><div dir=
=3D"ltr"><div class=3D"gmail_quote"><div>It's not clear what you mean b=
y using them the proposed functions with non-ranges algorithms.=C2=A0 My ex=
pectation is that they will be used exclusively with ranged-for.=C2=A0 Can =
you provide an example of how they might be (mis)used with legacy algorithm=
s?</div><div><br></div></div></div>
<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" target=3D"_=
blank">std-proposals+unsubscribe@isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">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/CAB%2B4KHKV6NnWfo1VujADzh%3DwR7wnLptw=
UjvNw2zZwjfuceHPRw%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfoo=
ter" target=3D"_blank">https://groups.google.com/a/isocpp.org/d/msgid/std-p=
roposals/CAB%2B4KHKV6NnWfo1VujADzh%3DwR7wnLptwUjvNw2zZwjfuceHPRw%40mail.gma=
il.com</a>.<br>
</blockquote></div>
<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/CA%2BOm%2BSiuP4w0c0-P3FQWk7bmPR1nNyU3=
n_8KrgEY_sgfvzU8XQ%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter"=
>https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CA%2BOm%2BSiu=
P4w0c0-P3FQWk7bmPR1nNyU3n_8KrgEY_sgfvzU8XQ%40mail.gmail.com</a>.<br />
--0000000000002d1d7405827f5049--
.
Author: Matthew Woehlke <mwoehlke.floss@gmail.com>
Date: Fri, 22 Feb 2019 13:44:40 -0500
Raw View
On 22/02/2019 05.51, Jake Arkinstall wrote:
> C++ has been needing things like this for a long time, to the point that
> I'm sure many of us have it implemented in some form or another in our ow=
n
> libraries (especially those of us with python cross-overs).
Yup. So far, three times in my own projects...
> With regards to the issue of fixing just the index to const [...]
> providing a conversion to (but not from, except for by constructor)
> size_t.
Wait... what does size_t have to do with anything? Did you mean 'the
return type of std::size'? (Which is NOT necessarily size_t!)
decltype(std::size(std::declval<QHash>()) =E2=86=92 int
--=20
Matthew
--=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/52d9e32b-630f-b501-2780-b790b574849a%40gmail.com=
..
.
Author: Andrew Giese <gieseanw@gmail.com>
Date: Mon, 25 Feb 2019 08:24:50 -0600
Raw View
--000000000000ab242d0582b8b498
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
If std::upto alone makes it into the standard, I am happy.
The others are icing on the cake.
There's so much code I see every day that could be turned into range based
loops with this (and I'd love the simpler syntax over ranges::iota)
-Andy
On Fri, Feb 22, 2019 at 12:44 PM Matthew Woehlke <mwoehlke.floss@gmail.com>
wrote:
> On 22/02/2019 05.51, Jake Arkinstall wrote:
> > C++ has been needing things like this for a long time, to the point tha=
t
> > I'm sure many of us have it implemented in some form or another in our
> own
> > libraries (especially those of us with python cross-overs).
>
> Yup. So far, three times in my own projects...
>
> > With regards to the issue of fixing just the index to const [...]
> > providing a conversion to (but not from, except for by constructor)
> > size_t.
> Wait... what does size_t have to do with anything? Did you mean 'the
> return type of std::size'? (Which is NOT necessarily size_t!)
>
> decltype(std::size(std::declval<QHash>()) =E2=86=92 int
>
> --
> Matthew
>
> --
> 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
> email 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/52d9e32b-630=
f-b501-2780-b790b574849a%40gmail.com
> .
>
--=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/CAO8_tC4-P04SLfOA1ZwkMiTyt%2BXhxeztErt%2BaxOEByu=
3n_Zcog%40mail.gmail.com.
--000000000000ab242d0582b8b498
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">If std::upto alone makes it into the standard, I am happy.=
<div>The others are icing on the cake.</div><div><br></div><div>There's=
so much code I see every day that could be turned into range based loops w=
ith this (and I'd love the simpler syntax over ranges::iota)</div><div>=
<br></div><div>-Andy<br><br></div></div><br><div class=3D"gmail_quote"><div=
dir=3D"ltr" class=3D"gmail_attr">On Fri, Feb 22, 2019 at 12:44 PM Matthew =
Woehlke <<a href=3D"mailto:mwoehlke.floss@gmail.com">mwoehlke.floss@gmai=
l.com</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex">On 22/02/2019 05.51, Jake Arkinstall wrote:<br>
> C++ has been needing things like this for a long time, to the point th=
at<br>
> I'm sure many of us have it implemented in some form or another in=
our own<br>
> libraries (especially those of us with python cross-overs).<br>
<br>
Yup. So far, three times in my own projects...<br>
<br>
> With regards to the issue of fixing just the index to const [...]<br>
> providing a conversion to (but not from, except for by constructor)<br=
>
> size_t.<br>
Wait... what does size_t have to do with anything? Did you mean 'the<br=
>
return type of std::size'? (Which is NOT necessarily size_t!)<br>
<br>
=C2=A0 decltype(std::size(std::declval<QHash>()) =E2=86=92 int<br>
<br>
-- <br>
Matthew<br>
<br>
-- <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%2Bunsubscribe@isocpp.org" target=3D=
"_blank">std-proposals+unsubscribe@isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">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/52d9e32b-630f-b501-2780-b790b574849a%=
40gmail.com" rel=3D"noreferrer" target=3D"_blank">https://groups.google.com=
/a/isocpp.org/d/msgid/std-proposals/52d9e32b-630f-b501-2780-b790b574849a%40=
gmail.com</a>.<br>
</blockquote></div>
<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/CAO8_tC4-P04SLfOA1ZwkMiTyt%2BXhxeztEr=
t%2BaxOEByu3n_Zcog%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter"=
>https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAO8_tC4-P04S=
LfOA1ZwkMiTyt%2BXhxeztErt%2BaxOEByu3n_Zcog%40mail.gmail.com</a>.<br />
--000000000000ab242d0582b8b498--
.
Author: Barry Revzin <barry.revzin@gmail.com>
Date: Mon, 25 Feb 2019 07:30:12 -0800 (PST)
Raw View
------=_Part_754_1420997906.1551108612412
Content-Type: multipart/alternative;
boundary="----=_Part_755_2077726309.1551108612412"
------=_Part_755_2077726309.1551108612412
Content-Type: text/plain; charset="UTF-8"
On Monday, February 25, 2019 at 8:25:03 AM UTC-6, Andrew Giese wrote:
>
> If std::upto alone makes it into the standard, I am happy.
>
inline constexpr auto upto = []<std::Integral T>(T N) {
return std::ranges::view::iota(static_cast<T>(0), N);
};
--
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 email 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/40b1d4b8-e872-42b3-89c3-9982a41cd39d%40isocpp.org.
------=_Part_755_2077726309.1551108612412
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br>On Monday, February 25, 2019 at 8:25:03 AM UTC-6, Andr=
ew Giese wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-=
left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr=
">If std::upto alone makes it into the standard, I am happy.</div></blockqu=
ote><div><br></div><div><div class=3D"prettyprint" style=3D"background-colo=
r: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style: soli=
d; border-width: 1px; overflow-wrap: break-word;"><code class=3D"prettyprin=
t"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=3D"styl=
ed-by-prettify">inline</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-prettif=
y">constexpr</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">auto</s=
pan><span style=3D"color: #000;" class=3D"styled-by-prettify"> upto </span>=
<span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">[]<</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify">std</span><span style=3D"color: #660;=
" class=3D"styled-by-prettify">::</span><span style=3D"color: #606;" class=
=3D"styled-by-prettify">Integral</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> T</span><span style=3D"color: #660;" class=3D"styl=
ed-by-prettify">>(</span><span style=3D"color: #000;" class=3D"styled-by=
-prettify">T N</span><span style=3D"color: #660;" class=3D"styled-by-pretti=
fy">)</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </sp=
an><span style=3D"color: #660;" class=3D"styled-by-prettify">{</span><span =
style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 </spa=
n><span style=3D"color: #008;" class=3D"styled-by-prettify">return</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> std</span><span st=
yle=3D"color: #660;" class=3D"styled-by-prettify">::</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify">ranges</span><span style=3D"color=
: #660;" class=3D"styled-by-prettify">::</span><span style=3D"color: #000;"=
class=3D"styled-by-prettify">view</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">::</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify">iota</span><span style=3D"color: #660;" class=3D"styled-by-=
prettify">(</span><span style=3D"color: #008;" class=3D"styled-by-prettify"=
>static_cast</span><span style=3D"color: #660;" class=3D"styled-by-prettify=
"><</span><font color=3D"#000088"><span style=3D"color: #000;" class=3D"=
styled-by-prettify">T</span></font><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">>(</span><span style=3D"color: #066;" class=3D"styled-=
by-prettify">0</span><span style=3D"color: #660;" class=3D"styled-by-pretti=
fy">),</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> N</=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">);</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"><br></span><span sty=
le=3D"color: #660;" class=3D"styled-by-prettify">};</span></div></code></di=
v><br>=C2=A0</div></div>
<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/40b1d4b8-e872-42b3-89c3-9982a41cd39d%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/40b1d4b8-e872-42b3-89c3-9982a41cd39d=
%40isocpp.org</a>.<br />
------=_Part_755_2077726309.1551108612412--
------=_Part_754_1420997906.1551108612412--
.
Author: Cleiton Santoia <cleitonsantoia@gmail.com>
Date: Tue, 26 Feb 2019 06:30:32 -0800 (PST)
Raw View
------=_Part_1237_1668872024.1551191432548
Content-Type: multipart/alternative;
boundary="----=_Part_1238_970475275.1551191432548"
------=_Part_1238_970475275.1551191432548
Content-Type: text/plain; charset="UTF-8"
My 2 cents:
UDL make it shorter
auto operator"" _up ( unsigned long long int max )
{
return ranges::view::iota(static_cast<int>(0), max);
}
for ( auto x : 10_up ) {
...
}
Explorer https://godbolt.org/z/IF3r89
Also, I think this "UDL ranges" probably would be included in range TS.
Em segunda-feira, 25 de fevereiro de 2019 12:30:12 UTC-3, Barry Revzin
escreveu:
>
>
> On Monday, February 25, 2019 at 8:25:03 AM UTC-6, Andrew Giese wrote:
>>
>> If std::upto alone makes it into the standard, I am happy.
>>
>
> inline constexpr auto upto = []<std::Integral T>(T N) {
> return std::ranges::view::iota(static_cast<T>(0), N);
> };
>
>
>
--
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 email 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/830ee9c0-f7ac-4252-96ad-a7038e6e31d6%40isocpp.org.
------=_Part_1238_970475275.1551191432548
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div><br></div><div>My 2 cents:</div><div><br></div><div><=
br></div><div>UDL make it shorter</div><div><br></div><div><div style=3D"ba=
ckground-color: rgb(255, 255, 254);" liberation=3D"" mono",=3D"" courier,=
=3D"" monospace;font-weight:=3D"" normal;font-size:=3D"" 14px;line-height:=
=3D"" 19px;white-space:=3D"" pre;"=3D""><div class=3D"prettyprint" style=3D=
"color: rgb(0, 0, 0); background-color: rgb(250, 250, 250); border-color: r=
gb(187, 187, 187); border-style: solid; border-width: 1px; overflow-wrap: b=
reak-word;"><code class=3D"prettyprint"><div class=3D"subprettyprint"><div =
style=3D"background-color: rgb(255, 255, 254);" liberation=3D"" mono",=3D""=
courier,=3D"" monospace;font-weight:=3D"" normal;font-size:=3D"" 14px;line=
-height:=3D"" 19px;white-space:=3D"" pre;"=3D""><div><span style=3D"color: =
#0000ff;"><span style=3D"color: #008;" class=3D"styled-by-prettify">auto</s=
pan></span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </spa=
n><span style=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"sty=
led-by-prettify">operator</span></span><span style=3D"color: #a31515;"><spa=
n style=3D"color: #080;" class=3D"styled-by-prettify">""</span></=
span><span style=3D"color: #000;" class=3D"styled-by-prettify"> _up </span>=
<span style=3D"color: #660;" class=3D"styled-by-prettify">(</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"col=
or: #0000ff;"><span style=3D"color: #008;" class=3D"styled-by-prettify">uns=
igned</span></span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"> </span><span style=3D"color: #0000ff;"><span style=3D"color: #008;" clas=
s=3D"styled-by-prettify">long</span></span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> </span><span style=3D"color: #0000ff;"><span sty=
le=3D"color: #008;" class=3D"styled-by-prettify">long</span></span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"co=
lor: #0000ff;"><span style=3D"color: #008;" class=3D"styled-by-prettify">in=
t</span></span><span style=3D"color: #000;" class=3D"styled-by-prettify"> m=
ax </span><span style=3D"color: #660;" class=3D"styled-by-prettify">)</span=
></div><div><span style=3D"color: #660;" class=3D"styled-by-prettify">{</sp=
an></div><div><span style=3D"color: #000;" class=3D"styled-by-prettify"> =
=C2=A0 =C2=A0</span><span style=3D"color: #0000ff;"><span style=3D"color: #=
008;" class=3D"styled-by-prettify">return</span></span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"> ranges</span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">::</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify">view</span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">::</span><span style=3D"color: #000;" class=3D"styled-=
by-prettify">iota</span><span style=3D"color: #660;" class=3D"styled-by-pre=
ttify">(</span><span style=3D"color: #0000ff;"><span style=3D"color: #008;"=
class=3D"styled-by-prettify">static_cast</span></span><span style=3D"color=
: #080;" class=3D"styled-by-prettify"><</span><span style=3D"color: #000=
0ff;"><span style=3D"color: #080;" class=3D"styled-by-prettify">int</span><=
/span><span style=3D"color: #080;" class=3D"styled-by-prettify">></span>=
<span style=3D"color: #660;" class=3D"styled-by-prettify">(</span><span sty=
le=3D"color: #09885a;"><span style=3D"color: #066;" class=3D"styled-by-pret=
tify">0</span></span><span style=3D"color: #660;" class=3D"styled-by-pretti=
fy">),</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> max=
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">);</span><=
/div><div><span style=3D"color: #660;" class=3D"styled-by-prettify">}</span=
><span style=3D"color: #000;" class=3D"styled-by-prettify"><br><br></span><=
div liberation=3D"" mono",=3D"" courier,=3D"" monospace;font-weight:=3D"" n=
ormal;font-size:=3D"" 14px;line-height:=3D"" 19px;white-space:=3D"" pre;"=
=3D""><div><span style=3D"color: #0000ff;"><span style=3D"color: #008;" cla=
ss=3D"styled-by-prettify">for</span></span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">(</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> </span><span style=3D"color: #0000ff;"><span style=3D"color: #008;=
" class=3D"styled-by-prettify">auto</span></span><span style=3D"color: #000=
;" class=3D"styled-by-prettify"> x </span><span style=3D"color: #660;" clas=
s=3D"styled-by-prettify">:</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"> </span><span style=3D"color: #09885a;"><span style=3D"colo=
r: #066;" class=3D"styled-by-prettify">10</span></span><span style=3D"color=
: #000;" class=3D"styled-by-prettify">_up </span><span style=3D"color: #660=
;" class=3D"styled-by-prettify">)</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">{</span><span style=3D"color: #000;" class=3D"styled-by-pret=
tify"><br>=C2=A0 </span><span style=3D"color: #660;" class=3D"styled-by-pre=
ttify">...</span></div><div><span style=3D"color: rgb(102, 102, 0); font-fa=
mily: Arial, Helvetica, sans-serif;"><span style=3D"color: #660;" class=3D"=
styled-by-prettify">}</span></span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"><br></span></div></div></div></div></div></code></div><di=
v style=3D"color: rgb(0, 0, 0); background-color: rgb(255, 255, 254);" libe=
ration=3D"" mono",=3D"" courier,=3D"" monospace;font-weight:=3D"" normal;fo=
nt-size:=3D"" 14px;line-height:=3D"" 19px;white-space:=3D"" pre;"=3D""><br>=
</div><div style=3D"background-color: rgb(255, 255, 254);" liberation=3D"" =
mono",=3D"" courier,=3D"" monospace;font-weight:=3D"" normal;font-size:=3D"=
" 14px;line-height:=3D"" 19px;white-space:=3D"" pre;"=3D"">Explorer=C2=A0<a=
href=3D"https://godbolt.org/z/IF3r89">https://godbolt.org/z/IF3r89</a><br>=
</div><br><font color=3D"#000000">Also, I think this "UDL ranges"=
probably would be included in range TS.</font></div></div><br><br>Em segun=
da-feira, 25 de fevereiro de 2019 12:30:12 UTC-3, Barry Revzin escreveu:<b=
lockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;borde=
r-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"><br>On Monday, =
February 25, 2019 at 8:25:03 AM UTC-6, Andrew Giese wrote:<blockquote class=
=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc s=
olid;padding-left:1ex"><div dir=3D"ltr">If std::upto alone makes it into th=
e standard, I am happy.</div></blockquote><div><br></div><div><div style=3D=
"background-color:rgb(250,250,250);border-color:rgb(187,187,187);border-sty=
le:solid;border-width:1px"><code><div><span style=3D"color:#008">inline</sp=
an><span style=3D"color:#000"> </span><span style=3D"color:#008">constexpr<=
/span><span style=3D"color:#000"> </span><span style=3D"color:#008">auto</s=
pan><span style=3D"color:#000"> upto </span><span style=3D"color:#660">=3D<=
/span><span style=3D"color:#000"> </span><span style=3D"color:#660">[]<<=
/span><span style=3D"color:#000">std</span><span style=3D"color:#660">::</s=
pan><span style=3D"color:#606">Integral</span><span style=3D"color:#000"> T=
</span><span style=3D"color:#660">>(</span><span style=3D"color:#000">T =
N</span><span style=3D"color:#660">)</span><span style=3D"color:#000"> </sp=
an><span style=3D"color:#660">{</span><span style=3D"color:#000"><br>=C2=A0=
=C2=A0 </span><span style=3D"color:#008">return</span><span style=3D"color=
:#000"> std</span><span style=3D"color:#660">::</span><span style=3D"color:=
#000">ranges</span><span style=3D"color:#660">::</span><span style=3D"color=
:#000">view</span><span style=3D"color:#660">::</span><span style=3D"color:=
#000">iota</span><span style=3D"color:#660">(</span><span style=3D"color:#0=
08">static<wbr>_cast</span><span style=3D"color:#660"><</span><font colo=
r=3D"#000088"><span style=3D"color:#000">T</span></font><span style=3D"colo=
r:#660">>(</span><span style=3D"color:#066">0</span><span style=3D"color=
:#660">),</span><span style=3D"color:#000"> N</span><span style=3D"color:#6=
60">);</span><span style=3D"color:#000"><br></span><span style=3D"color:#66=
0">};</span></div></code></div><br>=C2=A0</div></div></blockquote></div>
<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/830ee9c0-f7ac-4252-96ad-a7038e6e31d6%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/830ee9c0-f7ac-4252-96ad-a7038e6e31d6=
%40isocpp.org</a>.<br />
------=_Part_1238_970475275.1551191432548--
------=_Part_1237_1668872024.1551191432548--
.
Author: Dejan Milosavljevic <dmilos@gmail.com>
Date: Wed, 27 Feb 2019 08:56:47 +0100
Raw View
--00000000000093c5540582db84ac
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
=E2=80=A6 and iteration over file line by line.
ifstream ifs("text.txt")
for( std::string line : getline( ifs ) )
std::cout << line << std::endl;
On Tue, Feb 26, 2019 at 3:30 PM Cleiton Santoia <cleitonsantoia@gmail.com>
wrote:
>
> My 2 cents:
>
>
> UDL make it shorter
>
> auto operator"" _up ( unsigned long long int max )
> {
> return ranges::view::iota(static_cast<int>(0), max);
> }
>
> for ( auto x : 10_up ) {
> ...
> }
>
> Explorer https://godbolt.org/z/IF3r89
>
> Also, I think this "UDL ranges" probably would be included in range TS.
>
>
> Em segunda-feira, 25 de fevereiro de 2019 12:30:12 UTC-3, Barry Revzin
> escreveu:
>>
>>
>> On Monday, February 25, 2019 at 8:25:03 AM UTC-6, Andrew Giese wrote:
>>>
>>> If std::upto alone makes it into the standard, I am happy.
>>>
>>
>> inline constexpr auto upto =3D []<std::Integral T>(T N) {
>> return std::ranges::view::iota(static_cast<T>(0), N);
>> };
>>
>>
>>
> --
> 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
> email 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/830ee9c0-f7a=
c-4252-96ad-a7038e6e31d6%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/830ee9c0-f7=
ac-4252-96ad-a7038e6e31d6%40isocpp.org?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/CAEfefmxJnQS1FKdT50ebNZwe31_FYMCCL206f9EXb5FR6rp=
B-A%40mail.gmail.com.
--00000000000093c5540582db84ac
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div style=3D"text-align:left;color:rgb(3=
4,34,34);text-transform:none;text-indent:0px;letter-spacing:normal;font-fam=
ily:Arial,Helvetica,sans-serif;font-size:13.33px;font-style:normal;font-var=
iant:normal;font-weight:400;text-decoration:none;word-spacing:0px;white-spa=
ce:normal">=E2=80=A6 and iteration over file line by line.</div><div style=
=3D"text-align:left;color:rgb(34,34,34);text-transform:none;text-indent:0px=
;letter-spacing:normal;font-family:Arial,Helvetica,sans-serif;font-size:13.=
33px;font-style:normal;font-variant:normal;font-weight:400;text-decoration:=
none;word-spacing:0px;white-space:normal"><br></div><div style=3D"text-alig=
n:left;color:rgb(34,34,34);text-transform:none;text-indent:0px;letter-spaci=
ng:normal;font-family:Arial,Helvetica,sans-serif;font-size:13.33px;font-sty=
le:normal;font-variant:normal;font-weight:400;text-decoration:none;word-spa=
cing:0px;white-space:normal"><font face=3D"monospace,monospace">ifstream if=
s("text.txt")</font></div><div style=3D"text-align:left;color:rgb=
(34,34,34);text-transform:none;text-indent:0px;letter-spacing:normal;font-f=
amily:Arial,Helvetica,sans-serif;font-size:13.33px;font-style:normal;font-v=
ariant:normal;font-weight:400;text-decoration:none;word-spacing:0px;white-s=
pace:normal"><font face=3D"monospace,monospace">for( std::string line : get=
line( ifs=C2=A0) )</font></div><div style=3D"text-align:left;color:rgb(34,3=
4,34);text-transform:none;text-indent:0px;letter-spacing:normal;font-family=
:Arial,Helvetica,sans-serif;font-size:13.33px;font-style:normal;font-varian=
t:normal;font-weight:400;text-decoration:none;word-spacing:0px;white-space:=
normal"><font face=3D"monospace,monospace">=C2=A0std::cout << line &l=
t;< std::endl;</font></div><br></div></div><br><div class=3D"gmail_quote=
"><div class=3D"gmail_attr" dir=3D"ltr">On Tue, Feb 26, 2019 at 3:30 PM Cle=
iton Santoia <<a href=3D"mailto:cleitonsantoia@gmail.com">cleitonsantoia=
@gmail.com</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204=
,204);border-left-width:1px;border-left-style:solid"><div dir=3D"ltr"><div>=
<br></div><div>My 2 cents:</div><div><br></div><div><br></div><div>UDL make=
it shorter</div><div><br></div><div><div style=3D"background-color:rgb(255=
,255,254)"><div class=3D"gmail-m_5190497241473415744prettyprint" style=3D"b=
order:1px solid rgb(187,187,187);color:rgb(0,0,0);background-color:rgb(250,=
250,250)"><code class=3D"gmail-m_5190497241473415744prettyprint"><div class=
=3D"gmail-m_5190497241473415744subprettyprint"><div style=3D"background-col=
or:rgb(255,255,254)"><div><span style=3D"color:rgb(0,0,255)"><span class=3D=
"gmail-m_5190497241473415744styled-by-prettify" style=3D"color:rgb(0,0,136)=
">auto</span></span><span class=3D"gmail-m_5190497241473415744styled-by-pre=
ttify" style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(0,0,255)=
"><span class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"co=
lor:rgb(0,0,136)">operator</span></span><span style=3D"color:rgb(163,21,21)=
"><span class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"co=
lor:rgb(0,136,0)">""</span></span><span class=3D"gmail-m_51904972=
41473415744styled-by-prettify" style=3D"color:rgb(0,0,0)"> _up </span><span=
class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"color:rgb=
(102,102,0)">(</span><span class=3D"gmail-m_5190497241473415744styled-by-pr=
ettify" style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(0,0,255=
)"><span class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"c=
olor:rgb(0,0,136)">unsigned</span></span><span class=3D"gmail-m_51904972414=
73415744styled-by-prettify" style=3D"color:rgb(0,0,0)"> </span><span style=
=3D"color:rgb(0,0,255)"><span class=3D"gmail-m_5190497241473415744styled-by=
-prettify" style=3D"color:rgb(0,0,136)">long</span></span><span class=3D"gm=
ail-m_5190497241473415744styled-by-prettify" style=3D"color:rgb(0,0,0)"> </=
span><span style=3D"color:rgb(0,0,255)"><span class=3D"gmail-m_519049724147=
3415744styled-by-prettify" style=3D"color:rgb(0,0,136)">long</span></span><=
span class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"color=
:rgb(0,0,0)"> </span><span style=3D"color:rgb(0,0,255)"><span class=3D"gmai=
l-m_5190497241473415744styled-by-prettify" style=3D"color:rgb(0,0,136)">int=
</span></span><span class=3D"gmail-m_5190497241473415744styled-by-prettify"=
style=3D"color:rgb(0,0,0)"> max </span><span class=3D"gmail-m_519049724147=
3415744styled-by-prettify" style=3D"color:rgb(102,102,0)">)</span></div><di=
v><span class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"co=
lor:rgb(102,102,0)">{</span></div><div><span class=3D"gmail-m_5190497241473=
415744styled-by-prettify" style=3D"color:rgb(0,0,0)"> =C2=A0 =C2=A0</span><=
span style=3D"color:rgb(0,0,255)"><span class=3D"gmail-m_519049724147341574=
4styled-by-prettify" style=3D"color:rgb(0,0,136)">return</span></span><span=
class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"color:rgb=
(0,0,0)"> ranges</span><span class=3D"gmail-m_5190497241473415744styled-by-=
prettify" style=3D"color:rgb(102,102,0)">::</span><span class=3D"gmail-m_51=
90497241473415744styled-by-prettify" style=3D"color:rgb(0,0,0)">view</span>=
<span class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"colo=
r:rgb(102,102,0)">::</span><span class=3D"gmail-m_5190497241473415744styled=
-by-prettify" style=3D"color:rgb(0,0,0)">iota</span><span class=3D"gmail-m_=
5190497241473415744styled-by-prettify" style=3D"color:rgb(102,102,0)">(</sp=
an><span style=3D"color:rgb(0,0,255)"><span class=3D"gmail-m_51904972414734=
15744styled-by-prettify" style=3D"color:rgb(0,0,136)">static_cast</span></s=
pan><span class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"=
color:rgb(0,136,0)"><</span><span style=3D"color:rgb(0,0,255)"><span cla=
ss=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"color:rgb(0,1=
36,0)">int</span></span><span class=3D"gmail-m_5190497241473415744styled-by=
-prettify" style=3D"color:rgb(0,136,0)">></span><span class=3D"gmail-m_5=
190497241473415744styled-by-prettify" style=3D"color:rgb(102,102,0)">(</spa=
n><span style=3D"color:rgb(9,136,90)"><span class=3D"gmail-m_51904972414734=
15744styled-by-prettify" style=3D"color:rgb(0,102,102)">0</span></span><spa=
n class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"color:rg=
b(102,102,0)">),</span><span class=3D"gmail-m_5190497241473415744styled-by-=
prettify" style=3D"color:rgb(0,0,0)"> max</span><span class=3D"gmail-m_5190=
497241473415744styled-by-prettify" style=3D"color:rgb(102,102,0)">);</span>=
</div><div><span class=3D"gmail-m_5190497241473415744styled-by-prettify" st=
yle=3D"color:rgb(102,102,0)">}</span><span class=3D"gmail-m_519049724147341=
5744styled-by-prettify" style=3D"color:rgb(0,0,0)"><br><br></span><div><div=
><span style=3D"color:rgb(0,0,255)"><span class=3D"gmail-m_5190497241473415=
744styled-by-prettify" style=3D"color:rgb(0,0,136)">for</span></span><span =
class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"color:rgb(=
0,0,0)"> </span><span class=3D"gmail-m_5190497241473415744styled-by-prettif=
y" style=3D"color:rgb(102,102,0)">(</span><span class=3D"gmail-m_5190497241=
473415744styled-by-prettify" style=3D"color:rgb(0,0,0)"> </span><span style=
=3D"color:rgb(0,0,255)"><span class=3D"gmail-m_5190497241473415744styled-by=
-prettify" style=3D"color:rgb(0,0,136)">auto</span></span><span class=3D"gm=
ail-m_5190497241473415744styled-by-prettify" style=3D"color:rgb(0,0,0)"> x =
</span><span class=3D"gmail-m_5190497241473415744styled-by-prettify" style=
=3D"color:rgb(102,102,0)">:</span><span class=3D"gmail-m_519049724147341574=
4styled-by-prettify" style=3D"color:rgb(0,0,0)"> </span><span style=3D"colo=
r:rgb(9,136,90)"><span class=3D"gmail-m_5190497241473415744styled-by-pretti=
fy" style=3D"color:rgb(0,102,102)">10</span></span><span class=3D"gmail-m_5=
190497241473415744styled-by-prettify" style=3D"color:rgb(0,0,0)">_up </span=
><span class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"col=
or:rgb(102,102,0)">)</span><span class=3D"gmail-m_5190497241473415744styled=
-by-prettify" style=3D"color:rgb(0,0,0)"> </span><span class=3D"gmail-m_519=
0497241473415744styled-by-prettify" style=3D"color:rgb(102,102,0)">{</span>=
<span class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"colo=
r:rgb(0,0,0)"><br>=C2=A0 </span><span class=3D"gmail-m_5190497241473415744s=
tyled-by-prettify" style=3D"color:rgb(102,102,0)">...</span></div><div><spa=
n style=3D"color:rgb(102,102,0);font-family:Arial,Helvetica,sans-serif"><sp=
an class=3D"gmail-m_5190497241473415744styled-by-prettify" style=3D"color:r=
gb(102,102,0)">}</span></span><span class=3D"gmail-m_5190497241473415744sty=
led-by-prettify" style=3D"color:rgb(0,0,0)"><br></span></div></div></div></=
div></div></code></div><div style=3D"color:rgb(0,0,0);background-color:rgb(=
255,255,254)"><br></div><div style=3D"background-color:rgb(255,255,254)">Ex=
plorer=C2=A0<a href=3D"https://godbolt.org/z/IF3r89" target=3D"_blank">http=
s://godbolt.org/z/IF3r89</a><br></div><br><font color=3D"#000000">Also, I t=
hink this "UDL ranges" probably would be included in range TS.</f=
ont></div></div><br><br>Em segunda-feira, 25 de fevereiro de 2019 12:30:12 =
UTC-3, Barry Revzin escreveu:<blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);=
border-left-width:1px;border-left-style:solid"><div dir=3D"ltr"><br>On Mond=
ay, February 25, 2019 at 8:25:03 AM UTC-6, Andrew Giese wrote:<blockquote c=
lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;padding-left:1ex;bor=
der-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:sol=
id"><div dir=3D"ltr">If std::upto alone makes it into the standard, I am ha=
ppy.</div></blockquote><div><br></div><div><div style=3D"border:1px solid r=
gb(187,187,187);background-color:rgb(250,250,250)"><code><div><span style=
=3D"color:rgb(0,0,136)">inline</span><span style=3D"color:rgb(0,0,0)"> </sp=
an><span style=3D"color:rgb(0,0,136)">constexpr</span><span style=3D"color:=
rgb(0,0,0)"> </span><span style=3D"color:rgb(0,0,136)">auto</span><span sty=
le=3D"color:rgb(0,0,0)"> upto </span><span style=3D"color:rgb(102,102,0)">=
=3D</span><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb=
(102,102,0)">[]<</span><span style=3D"color:rgb(0,0,0)">std</span><span =
style=3D"color:rgb(102,102,0)">::</span><span style=3D"color:rgb(102,0,102)=
">Integral</span><span style=3D"color:rgb(0,0,0)"> T</span><span style=3D"c=
olor:rgb(102,102,0)">>(</span><span style=3D"color:rgb(0,0,0)">T N</span=
><span style=3D"color:rgb(102,102,0)">)</span><span style=3D"color:rgb(0,0,=
0)"> </span><span style=3D"color:rgb(102,102,0)">{</span><span style=3D"col=
or:rgb(0,0,0)"><br>=C2=A0 =C2=A0 </span><span style=3D"color:rgb(0,0,136)">=
return</span><span style=3D"color:rgb(0,0,0)"> std</span><span style=3D"col=
or:rgb(102,102,0)">::</span><span style=3D"color:rgb(0,0,0)">ranges</span><=
span style=3D"color:rgb(102,102,0)">::</span><span style=3D"color:rgb(0,0,0=
)">view</span><span style=3D"color:rgb(102,102,0)">::</span><span style=3D"=
color:rgb(0,0,0)">iota</span><span style=3D"color:rgb(102,102,0)">(</span><=
span style=3D"color:rgb(0,0,136)">static_cast</span><span style=3D"color:rg=
b(102,102,0)"><</span><font color=3D"#000088"><span style=3D"color:rgb(0=
,0,0)">T</span></font><span style=3D"color:rgb(102,102,0)">>(</span><spa=
n style=3D"color:rgb(0,102,102)">0</span><span style=3D"color:rgb(102,102,0=
)">),</span><span style=3D"color:rgb(0,0,0)"> N</span><span style=3D"color:=
rgb(102,102,0)">);</span><span style=3D"color:rgb(0,0,0)"><br></span><span =
style=3D"color:rgb(102,102,0)">};</span></div></code></div><br>=C2=A0</div>=
</div></blockquote></div>
<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" target=3D"_=
blank">std-proposals+unsubscribe@isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">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/830ee9c0-f7ac-4252-96ad-a7038e6e31d6%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/830ee9c0-f7ac-=
4252-96ad-a7038e6e31d6%40isocpp.org</a>.<br>
</blockquote></div>
<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/CAEfefmxJnQS1FKdT50ebNZwe31_FYMCCL206=
f9EXb5FR6rpB-A%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">htt=
ps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAEfefmxJnQS1FKdT=
50ebNZwe31_FYMCCL206f9EXb5FR6rpB-A%40mail.gmail.com</a>.<br />
--00000000000093c5540582db84ac--
.