220 36305 <ebc148fa-9b1f-4972-8a53-6f52c6ead259@isocpp.org> article
Path: news.gmane.org!.POSTED!not-for-mail
From: mihailnajdenov@gmail.com
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Now that the std::forward alternative has been rejected
Date: Sun, 24 Dec 2017 00:47:29 -0800 (PST)
Lines: 409
Approved: news@gmane.org
Message-ID: <ebc148fa-9b1f-4972-8a53-6f52c6ead259@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_12554_1402040117.1514105249893"
X-Trace: blaine.gmane.org 1514105135 30083 195.159.176.226 (24 Dec 2017 08:45:35 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Sun, 24 Dec 2017 08:45:35 +0000 (UTC)
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBCUJ3A7GRAPRBIWT7XIQKGQEEUOUI4A@isocpp.org Sun Dec 24 09:45:31 2017
Return-path: <std-proposals+bncBCUJ3A7GRAPRBIWT7XIQKGQEEUOUI4A@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-ua0-f200.google.com ([209.85.217.200])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBCUJ3A7GRAPRBIWT7XIQKGQEEUOUI4A@isocpp.org>)
	id 1eT1uT-0007M6-Oq
	for gclcip-std-proposals@m.gmane.org; Sun, 24 Dec 2017 09:45:30 +0100
Original-Received: by mail-ua0-f200.google.com with SMTP id 7sf19946299uap.5
        for <gclcip-std-proposals@m.gmane.org>; Sun, 24 Dec 2017 00:47:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=date:from:to:message-id:subject:mime-version:x-original-sender
         :reply-to:precedence:mailing-list:list-id:list-post:list-help
         :list-archive:list-subscribe:list-unsubscribe;
        bh=JXGIokQ5ULJWPknR8auWhAyqNDAq5dJfOhgzPCezIr4=;
        b=aItOvPYkd3z0HrIY5juSxa9CYYe3BzEF92n48uhK2qyEsen4WGOmG2Zz0KJg5qrJPV
         Whm1KMUA94PmhLhZ78hZfDPXRgqBWuc3WRaIbSI9FhBJFwiTKKaqXp9qsyLTixV3IzIn
         yYcW8M/IZacvQx7iImu/THEk1RDCFVeOeEIEqEERrBbf5FNv1sYb1Rrp9JmQwwyKLfkg
         n/x9elel7UNXrgTeXkR9cynIcl4yHO0OqtP2YypHRDYIwQ6YWPio4Ogar+SX/hE6XYqk
         NkuFvkydr/w81i16g2B3IxB8RfmBTQQlPEoHF0/d9b2ZNiF8UUXIBhmsE54rMTWPd6/R
         uIWg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20161025;
        h=date:from:to:message-id:subject:mime-version:x-original-sender
         :reply-to:precedence:mailing-list:list-id:list-post:list-help
         :list-archive:list-subscribe:list-unsubscribe;
        bh=JXGIokQ5ULJWPknR8auWhAyqNDAq5dJfOhgzPCezIr4=;
        b=lExNwLLzcDOY4JE0PvIFHuhRGSa2yzsED3ZZoG565aMdpvWTRjvowUeCsDYWOaYMz+
         LrF6saBR/YGi8xAM6YAeftOFkIhUnFAqIKz++Ot59EQeyDm22VVvGBYyslvp5eePGVd4
         DAUvvaOzM2f+myDax4DeVAv+LN1p7wlrZujBU1oSZB89eG7g+Vvb9Wb5OKnvMT3JuQWU
         m9NAudFKSzP8C36MYNKYLIcGVRMVQv2hTH1xiI1zXQE/xfczSxyBMrjeeMthl11c+bip
         7EkK4ShOo5Z6Xnz25HqL4bvP+55xBVJLrTk89EZzKUTzeFNv4bWtsev3t6SChTD432G6
         BlPA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:date:from:to:message-id:subject:mime-version
         :x-original-sender:reply-to:precedence:mailing-list:list-id
         :x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=JXGIokQ5ULJWPknR8auWhAyqNDAq5dJfOhgzPCezIr4=;
        b=rmTbfZIh3bST+7FvVcB1NHxI6TTEJlGcNdl1JqTQ7i9CJcSiUe2Ykb4A5p89gxM50S
         +Cdx+dT/J0QUHKCTkzvGNT9KxiITCtQ7FzgtkCvaY/738sreeCtC0VA4WqKf9hQ8wLrz
         QrYO12ZRHroKrDItWcqzhGS6koNsji5Ysq01S0OQGVBnq9l8XrF6szUhZfKmXlAhqgIC
         6qV+Oq665OIyobDNSRkZF4RxJfCaH1QUgSKcVYoNy0jNkNXE5moYkcakTMAGHss2eqRw
         rIri+gSk8ObuoNW0y8pRB82FKHQrcKKhC8NZIB4Sjto1OhB21yqmAQrlSsobbZh5/xq1
         d4rg==
X-Gm-Message-State: AKGB3mIgSaGKO4kCmn0XqLQwXH07wWBc1/bBdq++wPenaFCvfWHutI4Y
	B3TINJfcp20SJzB0UoeD0vIvGg==
X-Google-Smtp-Source: ACJfBoub7m8KvsM4Twq8crycWlWrvZ3IlaMllEzB5TANVT0NAxm2uO/L6kJyW1rAve8bxvTCJkaZ1Q==
X-Received: by 10.159.38.36 with SMTP id 33mr10001278uag.90.1514105252068;
        Sun, 24 Dec 2017 00:47:32 -0800 (PST)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.31.159.150 with SMTP id i144ls1991469vke.11.gmail; Sun, 24 Dec
 2017 00:47:30 -0800 (PST)
X-Received: by 10.31.49.200 with SMTP id x191mr1751591vkx.2.1514105250385;
        Sun, 24 Dec 2017 00:47:30 -0800 (PST)
X-Original-Sender: MihailNajdenov@gmail.com
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Spam-Checked-In-Group: std-proposals@isocpp.org
X-Google-Group-Id: 399137483710
List-Post: <https://groups.google.com/a/isocpp.org/group/std-proposals/post>, <mailto:std-proposals@isocpp.org>
List-Help: <https://support.google.com/a/isocpp.org/bin/topic.py?topic=25838>, <mailto:std-proposals+help@isocpp.org>
List-Archive: <https://groups.google.com/a/isocpp.org/group/std-proposals/>
List-Subscribe: <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>,
 <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:36305
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/36305>

------=_Part_12554_1402040117.1514105249893
Content-Type: multipart/alternative; 
	boundary="----=_Part_12555_870348575.1514105249894"

------=_Part_12555_870348575.1514105249894
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hello, I read=20
<https://botondballo.wordpress.com/2017/11/20/trip-report-c-standards-meeti=
ng-in-albuquerque-november-2017/>=20
the proposal "Forward without forward" has been rejected.

Now, can we please reconsider fixing forward "the right way" even if it=20
involves hacks?

And by "the right way" a mean, of course, let the template param be omitted=
..

Why is the right way? Multiple reasons:


   1. Preserve the API taught for close to 10 years now.
   2. Remove confusion for EVERYONE learning C++11+, be at a beginner or=20
   advanced user.
   3. The param is confusing on its own (to a beginner) - should I pass T=
=20
   or T&&, what happens if I pass const T, const T&&, T*? Do I really have=
=20
   options here?!? Or Just One Right Param?!?!
   4. The param is an ugly nightmare to pass in [](auto) {} scenario
   5. *Preserve* *and improve* symmetry with std::move!!! Both an operator=
=20
   and keyword break this, which is not good - std::move and std::forward a=
re=20
   closely related and should use similar API
   6. std::move is *way* more commonly used then frw for everyone except=20
   library writers - why should frw be that special to have its own op/keyw=
ord=20
   and move does not?!?
   7. There is no good operator and no good keyword to use
   8. Noone is really asking for a replacement (except library writers) but=
=20
   EVRYONE (except experts, I guess) ask for the bloody param to get lost.
   9. The param, technically CAN be deduced, thought not as regular=20
   argument passing.
  =20

It might be na=C3=AFve, but why, oh why, can't we define forward as

template< class T =3D /*implementation defined*/>

constexpr T&& forward( ... ) noexcept;

I mean, seriously?=20

The moment the compiler opens it mouth to say "can't deduce template=20
parameter '_Tp'" it just replaces it with decltype(arg). Old code still=20
works.=20
I am 1000% sure there is "a technical reason" why this "is not possible",=
=20
but... well if this case needs special rules, so be it - forward deserves=
=20
it.

And I mean it - no one is expecting forward and move to be "normal=20
functions", people are even surprised, move is so simple and (much like=20
forward) can be hacked with a simple cast!
If a special rule can be applied - forward deserves it - it is better,=20
simpler and backwards compatible then any keyword and operator.


Thank You
MihailNaydenov

--=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/ebc148fa-9b1f-4972-8a53-6f52c6ead259%40isocpp.or=
g.

------=_Part_12555_870348575.1514105249894
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hello, <a href=3D"https://botondballo.wordpress.com/2=
017/11/20/trip-report-c-standards-meeting-in-albuquerque-november-2017/">I =
read</a> the proposal &quot;Forward without forward&quot; has been rejected=
..</div><div><br></div><div>Now, can we please reconsider fixing forward &qu=
ot;the right way&quot; even if it involves hacks?</div><div><br></div><div>=
And by &quot;the right way&quot; a mean, of course, let the template param =
be omitted.</div><div><br></div><div>Why is the right way? Multiple reasons=
:</div><div><br></div><ol><li>Preserve the API taught for close to 10 years=
 now.</li><li>Remove confusion for EVERYONE learning C++11+, be at a beginn=
er or advanced user.</li><li>The param is confusing on its own (to a beginn=
er) - should I pass T or T&amp;&amp;, what happens if I pass const T, const=
 T&amp;&amp;, T*? Do I really have options here?!? Or Just One Right Param?=
!?!</li><li>The param is an ugly nightmare to pass in [](auto) {} scenario<=
/li><li><i>Preserve</i> <i>and improve</i> symmetry with std::move!!! Both =
an operator and keyword break this, which is not good - std::move and std::=
forward are closely related and should use similar API</li><li>std::move is=
 *way* more commonly used then frw for everyone except library writers - wh=
y should frw be that special to have its own op/keyword and move does not?!=
?</li><li><div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, =
34); border-image: none; text-align: left; color: rgb(34, 34, 34); text-tra=
nsform: none; text-indent: 0px; letter-spacing: normal; font-size: 13px; fo=
nt-variant: normal; word-spacing: 0px; white-space: normal; orphans: 2; -we=
bkit-text-stroke-width: 0px; background-color: transparent;"><span style=3D=
"display: inline !important; float: none; background-color: transparent; co=
lor: rgb(34, 34, 34); font-family: &quot;Arial&quot;,&quot;Helvetica&quot;,=
sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font=
-weight: 400; letter-spacing: normal; line-height: 17px; orphans: 2; text-a=
lign: left; text-decoration: none; text-indent: 0px; text-transform: none; =
-webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">Th=
ere is no good operator and no good keyword to use</span></div></li><li><di=
v style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-i=
mage: none; text-align: left; color: rgb(34, 34, 34); text-transform: none;=
 text-indent: 0px; letter-spacing: normal; font-size: 13px; font-variant: n=
ormal; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-str=
oke-width: 0px; background-color: transparent;"><span style=3D"display: inl=
ine !important; float: none; background-color: transparent; color: rgb(34, =
34, 34); font-family: &quot;Arial&quot;,&quot;Helvetica&quot;,sans-serif; f=
ont-size: 13px; font-style: normal; font-variant: normal; font-weight: 400;=
 letter-spacing: normal; line-height: 17px; orphans: 2; text-align: left; t=
ext-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-=
stroke-width: 0px; white-space: normal; word-spacing: 0px;">Noone is really=
 asking for a replacement (except library writers) but EVRYONE (except expe=
rts, I guess) ask for the bloody param to get lost.</span></div></li><li><d=
iv style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-=
image: none; text-align: left; color: rgb(34, 34, 34); text-transform: none=
; text-indent: 0px; letter-spacing: normal; font-size: 13px; font-variant: =
normal; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-st=
roke-width: 0px; background-color: transparent;"><span style=3D"display: in=
line !important; float: none; background-color: transparent; color: rgb(34,=
 34, 34); font-family: &quot;Arial&quot;,&quot;Helvetica&quot;,sans-serif; =
font-size: 13px; font-style: normal; font-variant: normal; font-weight: 400=
; letter-spacing: normal; line-height: 17px; orphans: 2; text-align: left; =
text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text=
-stroke-width: 0px; white-space: normal; word-spacing: 0px;">The param, tec=
hnically CAN be deduced, thought not as regular argument passing.</span></d=
iv></li></ol><div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 3=
4, 34); border-image: none; text-align: left; color: rgb(34, 34, 34); text-=
transform: none; text-indent: 0px; letter-spacing: normal; font-size: 13px;=
 font-variant: normal; word-spacing: 0px; white-space: normal; orphans: 2; =
-webkit-text-stroke-width: 0px; background-color: transparent;"><br></div><=
div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border=
-image: none; text-align: left; color: rgb(34, 34, 34); text-transform: non=
e; text-indent: 0px; letter-spacing: normal; font-size: 13px; font-variant:=
 normal; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-s=
troke-width: 0px; background-color: transparent;">It might be na=C3=AFve, b=
ut why, oh why, can&#39;t we define forward as</div><div style=3D"margin: 0=
px; padding: 0px; border: 0px rgb(34, 34, 34); border-image: none; text-ali=
gn: left; color: rgb(34, 34, 34); text-transform: none; text-indent: 0px; l=
etter-spacing: normal; font-size: 13px; font-variant: normal; word-spacing:=
 0px; white-space: normal; orphans: 2; -webkit-text-stroke-width: 0px; back=
ground-color: transparent;"><br></div><div style=3D"margin: 0px; padding: 0=
px; border: 0px rgb(34, 34, 34); border-image: none; text-align: left; colo=
r: rgb(34, 34, 34); text-transform: none; text-indent: 0px; letter-spacing:=
 normal; font-size: 13px; font-variant: normal; word-spacing: 0px; white-sp=
ace: normal; orphans: 2; -webkit-text-stroke-width: 0px; background-color: =
transparent;"><div class=3D"prettyprint" style=3D"border: 1px solid rgb(187=
, 187, 187); word-wrap: break-word; background-color: rgb(250, 250, 250);">=
<code class=3D"prettyprint"><div class=3D"subprettyprint"><span class=3D"kw=
1" style=3D"background-color: transparent; color: rgb(0, 0, 221); font-fami=
ly: DejaVuSansMono,&amp;quot;DejaVu Sans Mono&amp;quot;,courier,monospace; =
font-size: 12.8px; font-style: normal; font-variant: normal; font-weight: 4=
00; letter-spacing: normal; line-height: 14.08px; margin-bottom: 0px; margi=
n-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom=
: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align:=
 left; text-decoration: none; text-indent: 0px; text-transform: none; -webk=
it-text-stroke-width: 0px; white-space: nowrap; word-spacing: 0px;"><span c=
lass=3D"styled-by-prettify" style=3D"color: #008;">template</span></span><s=
pan class=3D"sy1" style=3D"background-color: transparent; color: rgb(0, 0, =
128); font-family: DejaVuSansMono,&amp;quot;DejaVu Sans Mono&amp;quot;,cour=
ier,monospace; font-size: 12.8px; font-style: normal; font-variant: normal;=
 font-weight: 400; letter-spacing: normal; line-height: 14.08px; margin-bot=
tom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2;=
 padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0=
px; text-align: left; text-decoration: none; text-indent: 0px; text-transfo=
rm: none; -webkit-text-stroke-width: 0px; white-space: nowrap; word-spacing=
: 0px;"><span class=3D"styled-by-prettify" style=3D"color: #660;">&lt;</spa=
n></span><span style=3D"display: inline !important; float: none; background=
-color: transparent; color: rgb(0, 0, 0); font-family: DejaVuSansMono,&quot=
;DejaVu Sans Mono&quot;,courier,monospace; font-size: 12.8px; font-style: n=
ormal; font-variant: normal; font-weight: 400; letter-spacing: normal; line=
-height: 14.08px; orphans: 2; text-align: left; text-decoration: none; text=
-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-s=
pace: nowrap; word-spacing: 0px;"><span class=3D"styled-by-prettify" style=
=3D"color: #000;"> </span></span><span class=3D"kw1" style=3D"background-co=
lor: transparent; color: rgb(0, 0, 221); font-family: DejaVuSansMono,&amp;q=
uot;DejaVu Sans Mono&amp;quot;,courier,monospace; font-size: 12.8px; font-s=
tyle: normal; font-variant: normal; font-weight: 400; letter-spacing: norma=
l; line-height: 14.08px; margin-bottom: 0px; margin-left: 0px; margin-right=
: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px;=
 padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: n=
one; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px=
; white-space: nowrap; word-spacing: 0px;"><span class=3D"styled-by-prettif=
y" style=3D"color: #008;">class</span></span><span style=3D"display: inline=
 !important; float: none; background-color: transparent; color: rgb(0, 0, 0=
); font-family: DejaVuSansMono,&quot;DejaVu Sans Mono&quot;,courier,monospa=
ce; font-size: 12.8px; font-style: normal; font-variant: normal; font-weigh=
t: 400; letter-spacing: normal; line-height: 14.08px; orphans: 2; text-alig=
n: left; text-decoration: none; text-indent: 0px; text-transform: none; -we=
bkit-text-stroke-width: 0px; white-space: nowrap; word-spacing: 0px;"><span=
 class=3D"styled-by-prettify" style=3D"color: #000;"> T </span><span class=
=3D"styled-by-prettify" style=3D"color: #660;">=3D</span><span class=3D"sty=
led-by-prettify" style=3D"color: #000;"> </span><span class=3D"styled-by-pr=
ettify" style=3D"color: #800;">/*implementation defined*/</span></span><spa=
n class=3D"sy1" style=3D"background-color: transparent; color: rgb(0, 0, 12=
8); font-family: DejaVuSansMono,&amp;quot;DejaVu Sans Mono&amp;quot;,courie=
r,monospace; font-size: 12.8px; font-style: normal; font-variant: normal; f=
ont-weight: 400; letter-spacing: normal; line-height: 14.08px; margin-botto=
m: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; p=
adding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px=
; text-align: left; text-decoration: none; text-indent: 0px; text-transform=
: none; -webkit-text-stroke-width: 0px; white-space: nowrap; word-spacing: =
0px;"><span class=3D"styled-by-prettify" style=3D"color: #660;">&gt;</span>=
</span><span class=3D"styled-by-prettify" style=3D"color: #000;"><br></span=
><span style=3D"display: inline !important; float: none; background-color: =
transparent; color: rgb(0, 0, 0); font-family: DejaVuSansMono,&quot;DejaVu =
Sans Mono&quot;,courier,monospace; font-size: 12.8px; font-style: normal; f=
ont-variant: normal; font-weight: 400; letter-spacing: normal; line-height:=
 14.08px; orphans: 2; text-align: left; text-decoration: none; text-indent:=
 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: no=
wrap; word-spacing: 0px;"><span class=3D"styled-by-prettify" style=3D"color=
: #000;"><br></span></span><span class=3D"kw4" style=3D"background-color: t=
ransparent; color: rgb(0, 0, 255); font-family: DejaVuSansMono,&amp;quot;De=
jaVu Sans Mono&amp;quot;,courier,monospace; font-size: 12.8px; font-style: =
normal; font-variant: normal; font-weight: 400; letter-spacing: normal; lin=
e-height: 14.08px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px;=
 margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; paddi=
ng-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; t=
ext-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; whit=
e-space: nowrap; word-spacing: 0px;"><span class=3D"styled-by-prettify" sty=
le=3D"color: #008;">constexpr</span></span><span style=3D"display: inline !=
important; float: none; background-color: transparent; color: rgb(0, 0, 0);=
 font-family: DejaVuSansMono,&quot;DejaVu Sans Mono&quot;,courier,monospace=
; font-size: 12.8px; font-style: normal; font-variant: normal; font-weight:=
 400; letter-spacing: normal; line-height: 14.08px; orphans: 2; text-align:=
 left; text-decoration: none; text-indent: 0px; text-transform: none; -webk=
it-text-stroke-width: 0px; white-space: nowrap; word-spacing: 0px;"><span c=
lass=3D"styled-by-prettify" style=3D"color: #000;"> T</span></span><span cl=
ass=3D"sy3" style=3D"background-color: transparent; color: rgb(0, 0, 64); f=
ont-family: DejaVuSansMono,&amp;quot;DejaVu Sans Mono&amp;quot;,courier,mon=
ospace; font-size: 12.8px; font-style: normal; font-variant: normal; font-w=
eight: 400; letter-spacing: normal; line-height: 14.08px; margin-bottom: 0p=
x; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; paddin=
g-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; tex=
t-align: left; text-decoration: none; text-indent: 0px; text-transform: non=
e; -webkit-text-stroke-width: 0px; white-space: nowrap; word-spacing: 0px;"=
><span class=3D"styled-by-prettify" style=3D"color: #660;">&amp;&amp;</span=
></span><span style=3D"display: inline !important; float: none; background-=
color: transparent; color: rgb(0, 0, 0); font-family: DejaVuSansMono,&quot;=
DejaVu Sans Mono&quot;,courier,monospace; font-size: 12.8px; font-style: no=
rmal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-=
height: 14.08px; orphans: 2; text-align: left; text-decoration: none; text-=
indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-sp=
ace: nowrap; word-spacing: 0px;"><span class=3D"styled-by-prettify" style=
=3D"color: #000;"> forward</span></span><span class=3D"br0" style=3D"backgr=
ound-color: transparent; color: rgb(0, 128, 0); font-family: DejaVuSansMono=
,&amp;quot;DejaVu Sans Mono&amp;quot;,courier,monospace; font-size: 12.8px;=
 font-style: normal; font-variant: normal; font-weight: 400; letter-spacing=
: normal; line-height: 14.08px; margin-bottom: 0px; margin-left: 0px; margi=
n-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-lef=
t: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decora=
tion: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-wid=
th: 0px; white-space: nowrap; word-spacing: 0px;"><span class=3D"styled-by-=
prettify" style=3D"color: #660;">(</span></span><span style=3D"display: inl=
ine !important; float: none; background-color: transparent; color: rgb(0, 0=
, 0); font-family: DejaVuSansMono,&quot;DejaVu Sans Mono&quot;,courier,mono=
space; font-size: 12.8px; font-style: normal; font-variant: normal; font-we=
ight: 400; letter-spacing: normal; line-height: 14.08px; orphans: 2; text-a=
lign: left; text-decoration: none; text-indent: 0px; text-transform: none; =
-webkit-text-stroke-width: 0px; white-space: nowrap; word-spacing: 0px;"><s=
pan class=3D"styled-by-prettify" style=3D"color: #000;"> </span></span><spa=
n class=3D"kw1" style=3D"background-color: transparent; color: rgb(0, 0, 22=
1); font-family: DejaVuSansMono,&amp;quot;DejaVu Sans Mono&amp;quot;,courie=
r,monospace; font-size: 12.8px; font-style: normal; font-variant: normal; f=
ont-weight: 400; letter-spacing: normal; line-height: 14.08px; margin-botto=
m: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; p=
adding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px=
; text-align: left; text-decoration: none; text-indent: 0px; text-transform=
: none; -webkit-text-stroke-width: 0px; white-space: nowrap; word-spacing: =
0px;"><span class=3D"styled-by-prettify" style=3D"color: #660;">...</span><=
span class=3D"styled-by-prettify" style=3D"color: #000;"> </span></span><sp=
an class=3D"br0" style=3D"background-color: transparent; color: rgb(0, 128,=
 0); font-family: DejaVuSansMono,&amp;quot;DejaVu Sans Mono&amp;quot;,couri=
er,monospace; font-size: 12.8px; font-style: normal; font-variant: normal; =
font-weight: 400; letter-spacing: normal; line-height: 14.08px; margin-bott=
om: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; =
padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0p=
x; text-align: left; text-decoration: none; text-indent: 0px; text-transfor=
m: none; -webkit-text-stroke-width: 0px; white-space: nowrap; word-spacing:=
 0px;"><span class=3D"styled-by-prettify" style=3D"color: #660;">)</span></=
span><span style=3D"display: inline !important; float: none; background-col=
or: transparent; color: rgb(0, 0, 0); font-family: DejaVuSansMono,&quot;Dej=
aVu Sans Mono&quot;,courier,monospace; font-size: 12.8px; font-style: norma=
l; font-variant: normal; font-weight: 400; letter-spacing: normal; line-hei=
ght: 14.08px; orphans: 2; text-align: left; text-decoration: none; text-ind=
ent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space=
: nowrap; word-spacing: 0px;"><span class=3D"styled-by-prettify" style=3D"c=
olor: #000;"> </span></span><span class=3D"kw1" style=3D"background-color: =
transparent; color: rgb(0, 0, 221); font-family: DejaVuSansMono,&amp;quot;D=
ejaVu Sans Mono&amp;quot;,courier,monospace; font-size: 12.8px; font-style:=
 normal; font-variant: normal; font-weight: 400; letter-spacing: normal; li=
ne-height: 14.08px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px=
; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; padd=
ing-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; =
text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; whi=
te-space: nowrap; word-spacing: 0px;"><span class=3D"styled-by-prettify" st=
yle=3D"color: #000;">noexcept</span></span><span class=3D"sy4" style=3D"bac=
kground-color: transparent; color: rgb(0, 128, 128); font-family: DejaVuSan=
sMono,&amp;quot;DejaVu Sans Mono&amp;quot;,courier,monospace; font-size: 12=
..8px; font-style: normal; font-variant: normal; font-weight: 400; letter-sp=
acing: normal; line-height: 14.08px; margin-bottom: 0px; margin-left: 0px; =
margin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; paddin=
g-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-d=
ecoration: none; text-indent: 0px; text-transform: none; -webkit-text-strok=
e-width: 0px; white-space: nowrap; word-spacing: 0px;"><span class=3D"style=
d-by-prettify" style=3D"color: #660;">;</span></span></div></code></div><b>=
</b><i></i><u></u><sub></sub><sup></sup><strike></strike><br></div><div sty=
le=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-image:=
 none; text-align: left; color: rgb(34, 34, 34); text-transform: none; text=
-indent: 0px; letter-spacing: normal; font-size: 13px; font-variant: normal=
; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-stroke-w=
idth: 0px; background-color: transparent;">I mean, seriously?=C2=A0</div><d=
iv style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-=
image: none; text-align: left; color: rgb(34, 34, 34); text-transform: none=
; text-indent: 0px; letter-spacing: normal; font-size: 13px; font-variant: =
normal; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-st=
roke-width: 0px; background-color: transparent;"><br></div><div style=3D"ma=
rgin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-image: none; t=
ext-align: left; color: rgb(34, 34, 34); text-transform: none; text-indent:=
 0px; letter-spacing: normal; font-size: 13px; font-variant: normal; word-s=
pacing: 0px; white-space: normal; orphans: 2; -webkit-text-stroke-width: 0p=
x; background-color: transparent;">The moment the compiler opens it mouth t=
o say &quot;can&#39;t deduce template parameter &#39;_Tp&#39;&quot; it just=
 replaces it with decltype(arg). Old code still works.=C2=A0</div><div styl=
e=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-image: =
none; text-align: left; color: rgb(34, 34, 34); text-transform: none; text-=
indent: 0px; letter-spacing: normal; font-size: 13px; font-variant: normal;=
 word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-stroke-wi=
dth: 0px; background-color: transparent;">I am 1000% sure there is &quot;a =
technical reason&quot; why this &quot;is not possible&quot;, but... well if=
 this case needs special rules, so be it - forward deserves it.</div><div s=
tyle=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-imag=
e: none; text-align: left; color: rgb(34, 34, 34); text-transform: none; te=
xt-indent: 0px; letter-spacing: normal; font-size: 13px; font-variant: norm=
al; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-text-stroke=
-width: 0px; background-color: transparent;"><br></div><div style=3D"margin=
: 0px; padding: 0px; border: 0px rgb(34, 34, 34); border-image: none; text-=
align: left; color: rgb(34, 34, 34); text-transform: none; text-indent: 0px=
; letter-spacing: normal; font-size: 13px; font-variant: normal; word-spaci=
ng: 0px; white-space: normal; orphans: 2; -webkit-text-stroke-width: 0px; b=
ackground-color: transparent;">And I mean it - no one is expecting forward =
and move to be &quot;normal functions&quot;, people are even surprised, mov=
e is so simple and (much like forward) can be hacked with a simple cast!</d=
iv><div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); bo=
rder-image: none; text-align: left; color: rgb(34, 34, 34); text-transform:=
 none; text-indent: 0px; letter-spacing: normal; font-size: 13px; font-vari=
ant: normal; word-spacing: 0px; white-space: normal; orphans: 2; -webkit-te=
xt-stroke-width: 0px; background-color: transparent;">If a special rule can=
 be applied - forward deserves it - it is better, simpler and backwards com=
patible then any keyword and operator.</div><div style=3D"margin: 0px; padd=
ing: 0px; border: 0px rgb(34, 34, 34); border-image: none; text-align: left=
; color: rgb(34, 34, 34); text-transform: none; text-indent: 0px; letter-sp=
acing: normal; font-size: 13px; font-variant: normal; word-spacing: 0px; wh=
ite-space: normal; orphans: 2; -webkit-text-stroke-width: 0px; background-c=
olor: transparent;"><br></div><div style=3D"margin: 0px; padding: 0px; bord=
er: 0px rgb(34, 34, 34); border-image: none; text-align: left; color: rgb(3=
4, 34, 34); text-transform: none; text-indent: 0px; letter-spacing: normal;=
 font-size: 13px; font-variant: normal; word-spacing: 0px; white-space: nor=
mal; orphans: 2; -webkit-text-stroke-width: 0px; background-color: transpar=
ent;"><br></div><div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34=
, 34, 34); border-image: none; text-align: left; color: rgb(34, 34, 34); te=
xt-transform: none; text-indent: 0px; letter-spacing: normal; font-size: 13=
px; font-variant: normal; word-spacing: 0px; white-space: normal; orphans: =
2; -webkit-text-stroke-width: 0px; background-color: transparent;">Thank Yo=
u</div><div style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34)=
; border-image: none; text-align: left; color: rgb(34, 34, 34); text-transf=
orm: none; text-indent: 0px; letter-spacing: normal; font-size: 13px; font-=
variant: normal; word-spacing: 0px; white-space: normal; orphans: 2; -webki=
t-text-stroke-width: 0px; background-color: transparent;">MihailNaydenov</d=
iv></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/ebc148fa-9b1f-4972-8a53-6f52c6ead259%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/ebc148fa-9b1f-4972-8a53-6f52c6ead259=
%40isocpp.org</a>.<br />

------=_Part_12555_870348575.1514105249894--

------=_Part_12554_1402040117.1514105249893--

.
