220 38249 <CALvx3hYcWKh-_1t298oPx7xThDaHab5Dy354vzCwTdswBnMJoA@mail.gmail.com> article
Path: news.gmane.org!.POSTED!not-for-mail
From: Richard Hodges <hodges.r@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Re: Simple, terse universal forwading for the
 next decade
Date: Tue, 29 May 2018 00:22:53 +0200
Lines: 391
Approved: news@gmane.org
Message-ID: <CALvx3hYcWKh-_1t298oPx7xThDaHab5Dy354vzCwTdswBnMJoA@mail.gmail.com>
References: <80548757-8a42-499a-bf15-3670b2727082@isocpp.org>
 <8d3b34de-c06a-4083-bb0c-8e2c7482abf0@isocpp.org> <9930a9dc-b998-4431-a159-6d72d1d9b2ff@isocpp.org>
 <CALmDwq2ku8=UX1XYGtroNQ5nUCZ6HvSN9TDSmrdg4S+YOU0R1A@mail.gmail.com>
 <8e1c6607-a92d-496b-aad1-e992e049a748@isocpp.org> <CALmDwq1CpLZJMFiY1-3Nk-bq+686h2g7rdT6JcSpSg6yYu39zg@mail.gmail.com>
 <2f782c2d-e89c-4d8b-8ef6-372c00e62ab1@isocpp.org> <93ee46a2-1469-48ae-b931-c060946f38d5@isocpp.org>
 <609892ba-f717-4458-b9e3-c5975378ad29@isocpp.org> <CAANG=kUqV_OU+XTZpgMg3LJo_EH1P9CMWVXi+ZUx4aa-mcH54g@mail.gmail.com>
 <CALvx3haxYiRPejcW3TqvCWcD9RRm+qZcz2F6vcVMVBx3PDJF2w@mail.gmail.com>
 <4d68237c-077a-4408-abf1-5f9670311f71@isocpp.org> <CAANG=kVSgNmGAyjSv3TzijXPUdd1qy=d6NLqkkeYbxz3HVqXfg@mail.gmail.com>
 <aa3b6d3b-78c9-447b-8052-143f6dc5b32c@isocpp.org> <CANPOWsdk+X4Ydb4acYW9b9iy1nUOKxNLqhZBk+JeCnJyeetB5w@mail.gmail.com>
 <CAANG=kXffB7HuGUMsLAfrKHbavJwxdOrmz9=tWC2Ev4S0pFQuw@mail.gmail.com>
 <70fe7dc7-b8a6-4498-9aa6-f88e6af06506@isocpp.org> <CAANG=kWd9m51WwwAQV22pGDo8=85kCiveM60mMo2+pp_J7K8Og@mail.gmail.com>
 <0c4f8aa4-6b4f-4fe3-a02a-ef33eae990a8@isocpp.org> <CALmDwq0FzcxOdmG2GtZRDO70X=1j9qEUnL-gqB66606vSU=_eQ@mail.gmail.com>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="000000000000c08aac056d4b8fd3"
X-Trace: blaine.gmane.org 1527546060 2577 195.159.176.226 (28 May 2018 22:21:00 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Mon, 28 May 2018 22:21:00 +0000 (UTC)
To: std-proposals@isocpp.org
Original-X-From: std-proposals+bncBD4PBM7UWAHRBSUCWLMAKGQE4WV4EOY@isocpp.org Tue May 29 00:20:56 2018
Return-path: <std-proposals+bncBD4PBM7UWAHRBSUCWLMAKGQE4WV4EOY@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-io0-f197.google.com ([209.85.223.197])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBD4PBM7UWAHRBSUCWLMAKGQE4WV4EOY@isocpp.org>)
	id 1fNQVc-0000Z7-5G
	for gclcip-std-proposals@m.gmane.org; Tue, 29 May 2018 00:20:56 +0200
Original-Received: by mail-io0-f197.google.com with SMTP id f9-v6sf11603406iob.14
        for <gclcip-std-proposals@m.gmane.org>; Mon, 28 May 2018 15:23:07 -0700 (PDT)
ARC-Seal: i=2; a=rsa-sha256; t=1527546187; cv=pass;
        d=google.com; s=arc-20160816;
        b=I0QQ8hEaNjqmyxTego1eUvOQjpKhQuHnE8LwAYOwTWnS5mq8uYiDZuL7W+vbrv1OFF
         IFTF5Rio4p0XUfmjGjnGajPXYRuM5Y8yIlWBBNs/9v4oG56YzboeO4b+uSw1uxLRfKuw
         4LM+KHvVarjs7gWID5n2ITRgRW3CE0cgN57tmAb9Yk/CjTb1HGn4rWUMCI9wekEndBG8
         d7LQtXb198F6XnbzwMZk8wDN9/0lpzuQ5LtH7XgXFNAEu/0n2hToLwyjkgtlV6ostg50
         3OkeAQhAPJf8wyGgZv7IGhuA8sNjFMAUbYUwy56j7mJYAXTa6si/GK/7hklh8MYE4QcL
         lggw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
         :list-id:mailing-list:precedence:reply-to:to:subject:message-id:date
         :from:in-reply-to:references:mime-version:arc-authentication-results
         :arc-message-signature:dkim-signature:arc-authentication-results;
        bh=gppJZsuzQbix6tKgxMhsJT+fhKQA5zmLG5YuNqhimCQ=;
        b=JpJfvNBIbbw0XJLbuta6NDeHF0px0UoOB6XeCsafcOGzRFzFJnEBV9istIiT5E/tgG
         jKaagr0rFudn5pMUOXd8kzZXutPaFDihMrXB5lM+/a+MYipwmGNcV10u00s58UOZRLSz
         61A4YzTNJ9JxUXgSfqXfUh49zkSCzYwub6N3NqZ0xHRpAHZ3hGyNM11oblon/XJDUyzu
         CbRYJ1CB4oEKM52dhKPZIhmeIrCKaQY/P4Vf6Zph+ETMOJ6H5ozPKZfpBucmaUgYD7MZ
         zUFG1a1AlRF7b32qLlibIz07yPM4Yc24+svJCK24qmCroB3ydomLRwTehvGRi6mPMiAH
         Clkg==
ARC-Authentication-Results: i=2; mx.google.com;
       dkim=pass header.i=@gmail.com header.s=20161025 header.b=D3JRuewf;
       spf=pass (google.com: domain of hodges.r@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=hodges.r@gmail.com;
       dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=mime-version:references:in-reply-to:from:date:message-id:subject:to
         :x-original-sender:x-original-authentication-results:reply-to
         :precedence:mailing-list:list-id:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=gppJZsuzQbix6tKgxMhsJT+fhKQA5zmLG5YuNqhimCQ=;
        b=Dp1DHtXRH+LLHCqy1U8jRfE7RAb8CQtS2JFuv8YLIxfo6eSJFBt3gS7beKTF4Vg/W3
         V8ZZTzVKnuwD1Euf+gRJ1jUPwXBKasz3vwDKpuEezvJgdujgGQXJup3GvmXLu5RI2yKd
         KwURK75Q8ju+S80NtmxyhYxMMM2ynb4gER0vRhLZAntivQLBfBwJEeI1UbT37003Zu3c
         Hx+U0L+PKXGP9RqGnUygmWbb9btPYcqpTI1ZmlstFL62T8Uyuxw+X8v0PuQL1Zn+4Pvw
         NoVS45iVJ5cA7FHi41I29mFVrBT9aYEvx7Cg/iDmRKE4XkEdDG4CurnNnZrzLNp8lXi3
         fYpw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:mime-version:references:in-reply-to:from:date
         :message-id:subject:to:x-original-sender
         :x-original-authentication-results:reply-to:precedence:mailing-list
         :list-id:x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=gppJZsuzQbix6tKgxMhsJT+fhKQA5zmLG5YuNqhimCQ=;
        b=b75hISZkA2zaukFPj7XOBz96T3C2nE8jb9LWgJoxcbS2XH4HBdjoQj4WAmHjcORUnK
         03B9gHpCwl5ehWR/QVQ+8Qv6+0fLlSohzTJRiTTDIoR53nwuvJZsuqX1XGv7lznKaVi2
         LuixGCoqgcl+VV78OvVNB3YFHUfdkYgeSy0o/q5hl4seNmbix2mHMyqFykCXhjO+Wy3s
         qcn8m3MtJb7I5gEkCHMwmXLXcv5gj2hW/EF5PXE0r0tM2oN2ya7CTig8Hl7wQ7c7h/O1
         MR2RwI/j9r2wcB+vLk5eJ3pbbgCXi0rLoAl4gq/1p+B21YRHY6PzwBWq2FpXJheyz1CL
         3JvA==
X-Gm-Message-State: ALKqPweODNoNnlv22ApWaIusNV7Qyt4UCVXd54D5Em7dYNKfm8wmpdPD
	mvb7yq1nxemm2U+nd+ju+tvq8g==
X-Google-Smtp-Source: ADUXVKIoTs9PkrPH+lUV3l4wC1CPrMjncpO5vSuGvYicBWDnlfZyJHyEvtmQCYW9d3uh/V3g2hYrUQ==
X-Received: by 2002:a24:4d02:: with SMTP id l2-v6mr6993761itb.7.1527546186968;
        Mon, 28 May 2018 15:23:06 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 2002:a24:6951:: with SMTP id e78-v6ls201990itc.10.canary-gmail;
 Mon, 28 May 2018 15:23:05 -0700 (PDT)
X-Received: by 2002:a24:3cd7:: with SMTP id m206-v6mr5570392ita.113.1527546185803;
        Mon, 28 May 2018 15:23:05 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1527546185; cv=none;
        d=google.com; s=arc-20160816;
        b=iGGEp82jcIhMBYv9QoGpD2JNzPy5MGMWDKA3C2xzYFWy/uAzUK4CV/Blaj55hj/w+l
         ud4OOu5ZRpYQ7i/4f0JRjmrYiIaAytXzfciHC85LbiQ4mFtYzVc0FZCiVI2QvgYvfxf0
         QlWZnZGyc0C9LFL5gfxGXzEaEbg5goeyv80lkZ3NAVpoEirWKfs+v0OPz/cMmxoTWb/z
         6n/P0fFhdCwcZQy00YKxDJSChDR8D9SGKItoqnDct866cPLgORDPtF1zc9kjmflqRvX1
         cwwqRjiLtUFwukq262V3PRI8F0z2KKjej9Yg9FUH2GfYOkFhNVOUl6P3yO4vkjydMWZO
         UdsQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=to:subject:message-id:date:from:in-reply-to:references:mime-version
         :dkim-signature:arc-authentication-results;
        bh=e7+bvnD+U0aP/RdYFwM27bkx93jXHC1znVLcG/ihTG8=;
        b=N3NCjT8DmV7SMS5kqE7juTGhWfUL+pGQ8rSraILxs9M4YxxiMPEsZAnbXPt/CukGcY
         5/WSdzv2ntmQ30reakOsyKo46d/ExuGlFdad+GoCZcrYTpDxQE4Ft2+y8FbGEKybmz+h
         g3XERlko2KvhSj4ukvleW8bok/88PWuMusU9aX/fhhOSkRvzgTReSNwfvZ4QIfTf3Rv3
         iDY+ds8qeAVfUC2tI9lEIH0e3afJKS15EsEaxnsbpaF5+saOg8MfkyRBC7KuEAxDijYC
         HmSC2wpjgIkDvN1Otz0xHvl/yz80OJAk97HgePjJ9T0/0wM8u/udmqlSPKUHfwMADYRC
         yxyw==
ARC-Authentication-Results: i=1; mx.google.com;
       dkim=pass header.i=@gmail.com header.s=20161025 header.b=D3JRuewf;
       spf=pass (google.com: domain of hodges.r@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=hodges.r@gmail.com;
       dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com
Original-Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41])
        by mx.google.com with SMTPS id j204-v6sor15604423iof.155.2018.05.28.15.23.05
        for <std-proposals@isocpp.org>
        (Google Transport Security);
        Mon, 28 May 2018 15:23:05 -0700 (PDT)
Received-SPF: pass (google.com: domain of hodges.r@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;
X-Received: by 2002:a6b:2251:: with SMTP id i78-v6mr11583877ioi.276.1527546185286;
 Mon, 28 May 2018 15:23:05 -0700 (PDT)
In-Reply-To: <CALmDwq0FzcxOdmG2GtZRDO70X=1j9qEUnL-gqB66606vSU=_eQ@mail.gmail.com>
X-Original-Sender: hodges.r@gmail.com
X-Original-Authentication-Results: mx.google.com;       dkim=pass
 header.i=@gmail.com header.s=20161025 header.b=D3JRuewf;       spf=pass
 (google.com: domain of hodges.r@gmail.com designates 209.85.220.41 as
 permitted sender) smtp.mailfrom=hodges.r@gmail.com;       dmarc=pass (p=NONE
 sp=QUARANTINE dis=NONE) header.from=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:38249
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/38249>

--000000000000c08aac056d4b8fd3
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Anyone proposing adding another operator to c++ has clearly not recently
had to teach the language or maintain code.

forward (or give, or similar) should be a keyword. I know the committee
fears adding keywords, but this fear is unfounded. The constant
hoop-jumping merely to avoid the inevitable simply creates technical debt
which will impede design choices in the future.



On Mon, 28 May 2018 at 22:26, Nicolas Lesser <blitzrakete@gmail.com> wrote:

> That postfix && is problematic:
>
> auto Value =3D Arg && (Foo =3D=3D 10 || Foo =3D=3D 11);
>
> Today this would evaluate Arg and iff true see if Foo is 10 or 11 and
> store that value in Value.
>
> What would this code mean with your operator? Would it instead be
> interpreted as a forwarded Arg called whether Foo is 10 or 11?
> Would it be ambiguous? How do you want to disambiguate between the two
> meanings?
>
> On Mon, May 28, 2018 at 10:20 PM <mihailnajdenov@gmail.com> wrote:
>
>>
>>
>> On Monday, May 28, 2018 at 8:50:41 PM UTC+3, Ga=C5=A1per A=C5=BEman wrot=
e:
>>>
>>> Nicol,
>>>
>>> I forsee a fight to distinguish the unary && from the binary && in fold
>>>>> expressions, but otherwise...
>>>>>
>>>> I don't think there *is* an "otherwise" at that point. If &&...
>>>> already has a meaning, that's the end of the conversation. Backwards
>>>> incompatible changes for this are probably a non-starter.
>>>>
>>>
>>> The "otherwise" was not meant as "I see a possibility of changing the
>>> meaning of existing syntax" :). I meant that (args&&)... might actually
>>> still be possible. I do think it's iffy.
>>>
>>
>> What the problem might be?
>>
>> auto c =3D a&& && b;
>>
>> template<class... T>
>> auto sum(T&&... args) {
>>  return (args&& && ... && T{});
>> }
>>
>> These will do what it's expected. They look a bit funny, but not *that*
>> funny.
>>
>>
>>> Everyone:
>>>
>>> I do think "forward" needs more love, and the intersection with move
>>> might or might not make sense, I'm not decided at this point. Both side=
s of
>>> the debate are valid, imo, and it really depends on the final syntax fo=
r *forward
>>> *if extending it to move makes sense.
>>>
>>
>> I am yet to hear any objections to merger outside the dropping of
>> "exactly" in "know *exactly *what going on".
>> That is tiny price to pay for the 4+1 pretty solid pros I have given,
>> especially considering - *you have no decisions to make, based on that
>> information*.
>>
>> And don't forget, you are an expert, you are using thins for 10 years,
>> you feel at home and only annoyances stick up for you (with forward).
>> But for a new user it is a different story. Essentially one less lesson
>> to learn.
>>
>>
>>
>>>
>>> In fact, if the '&&' unary postifx worked, then std::move would *not* b=
e
>>> covered by it, as &&-collapsing rules would have to be obeyed, and an
>>> lvalue with a &&-specifier decays into a reference. (& && -> &)
>>>
>>
>> I do not understand your point. What reference collapsing has to do with
>> an operator?
>>
>>
>>>
>>> ... if this nips postfix && in the bud, I'm fine with that :).
>>>
>>> Also, I meant =3D> as prefix. Postfix unary operators are *weird*.
>>>
>>
>> The problem will be as in [x=3D=3D>y] it will visually represent, well,
>> exactly the opposite :)
>>
>> As for the postfix - they are the solution to the problem, for 4 reasons=
..
>>
>> 1. The highest possible precedence which is AWAYS what you want here.
>> 2. Keep the clean the lhs clean to not visually confuse on assignment an=
d
>> keep the rhs "dirty" as img&&.flipped() or func&&(args&&=E2=80=A6)To nic=
ely
>> indicate "just before you make this call" notion
>> 3. The are not common, so they do tend to draw attention.
>> 4. The fact that the op is *after *the variable reinforces the reminder
>> "this is end of line", "the variable was before me". I am ending it, do =
not
>> use after me.
>>
>> As you can see all 4 apply to both move and forward equally. That is
>> because, the fact that it is and-of-line is more important then what was=
 in
>> the train.
>> It really is.
>>
>>
>>>
>>> G
>>>
>>>
>>>
>>> On Mon, May 28, 2018 at 6:40 PM, Nicol Bolas <jmck...@gmail.com> wrote:
>>>
>>>> On Monday, May 28, 2018 at 1:11:42 PM UTC-4, Ga=C5=A1per A=C5=BEman wr=
ote:
>>>>>
>>>>> I forsee a fight to distinguish the unary && from the binary && in
>>>>> fold expressions, but otherwise...
>>>>>
>>>>
>>>> I don't think there *is* an "otherwise" at that point. If &&...
>>>> already has a meaning, that's the end of the conversation. Backwards
>>>> incompatible changes for this are probably a non-starter.
>>>>
>>>> Indeed, the problem of fold expressions with post-fix operators like
>>>> this is going to crop up with a lot of possible operators.
>>>>
>>>> --
>>>> 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-proposal...@isocpp.org.
>>>> To post to this group, send email to std-pr...@isocpp.org.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/70fe7dc7-=
b8a6-4498-9aa6-f88e6af06506%40isocpp.org
>>>> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/70fe7dc7=
-b8a6-4498-9aa6-f88e6af06506%40isocpp.org?utm_medium=3Demail&utm_source=3Df=
ooter>
>>>> .
>>>>
>>>
>>> --
>> You received this message because you are subscribed to the Google Group=
s
>> "ISO C++ Standard - Future Proposals" group.
>> To unsubscribe from this group and stop receiving emails from it, send a=
n
>> 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/0c4f8aa4-6b=
4f-4fe3-a02a-ef33eae990a8%40isocpp.org
>> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/0c4f8aa4-6=
b4f-4fe3-a02a-ef33eae990a8%40isocpp.org?utm_medium=3Demail&utm_source=3Dfoo=
ter>
>> .
>>
> --
> 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/CALmDwq0Fzcx=
OdmG2GtZRDO70X%3D1j9qEUnL-gqB66606vSU%3D_eQ%40mail.gmail.com
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CALmDwq0Fzc=
xOdmG2GtZRDO70X%3D1j9qEUnL-gqB66606vSU%3D_eQ%40mail.gmail.com?utm_medium=3D=
email&utm_source=3Dfooter>
> .
>

--=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/CALvx3hYcWKh-_1t298oPx7xThDaHab5Dy354vzCwTdswBnM=
JoA%40mail.gmail.com.

--000000000000c08aac056d4b8fd3
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Anyone proposing adding another operator to c++ has clearl=
y not recently had to teach the language or maintain code.<div><br></div><d=
iv><font face=3D"monospace, monospace">forward</font> (or <font face=3D"mon=
ospace, monospace">give</font>, or similar) should be a keyword. I know the=
 committee fears adding keywords, but this fear is unfounded. The constant =
hoop-jumping merely to avoid the inevitable simply creates technical debt w=
hich will impede design choices in the future.</div><div><br></div><div><br=
></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr">On Mon, 28 May=
 2018 at 22:26, Nicolas Lesser &lt;<a href=3D"mailto:blitzrakete@gmail.com"=
>blitzrakete@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_q=
uote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1e=
x"><div dir=3D"ltr">That postfix &amp;&amp; is problematic:<div><br></div><=
div>auto Value =3D Arg &amp;&amp; (Foo =3D=3D 10 || Foo =3D=3D 11);</div><d=
iv><br></div><div>Today this would evaluate Arg and iff true see if Foo is =
10 or 11 and store that value in Value.</div><div><br></div><div>What would=
 this code mean with your operator? Would it instead be interpreted as a fo=
rwarded Arg called whether Foo is 10 or 11?</div><div>Would it be ambiguous=
? How do you want to disambiguate between the two meanings?</div></div><br>=
<div class=3D"gmail_quote"><div dir=3D"ltr">On Mon, May 28, 2018 at 10:20 P=
M &lt;<a href=3D"mailto:mihailnajdenov@gmail.com" target=3D"_blank">mihailn=
ajdenov@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><d=
iv dir=3D"ltr"><br><br>On Monday, May 28, 2018 at 8:50:41 PM UTC+3, Ga=C5=
=A1per A=C5=BEman 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">Nicol,<div><br></div><div><span style=3D"color:rgb(80,0,80);font-fami=
ly:arial,sans-serif;font-size:12.8px;font-style:normal;font-weight:400;lett=
er-spacing:normal;text-align:start;text-indent:0px;text-transform:none;whit=
e-space:normal;word-spacing:0px;background-color:rgb(255,255,255)"><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px=
 solid rgb(204,204,204);padding-left:1ex"><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">I forsee a fight to distinguish the unary &amp;&amp; from =
the binary &amp;&amp; in fold expressions, but otherwise...<br></blockquote=
><span style=3D"font-size:12.8px">I don&#39;t think there</span><span style=
=3D"font-size:12.8px">=C2=A0</span><i style=3D"font-size:12.8px">is</i><spa=
n style=3D"font-size:12.8px">=C2=A0</span><span style=3D"font-size:12.8px">=
an &quot;otherwise&quot; at that point. If &amp;&amp;... already has a mean=
ing, that&#39;s the end of the conversation. Backwards incompatible changes=
 for this are probably a non-starter.</span><br></blockquote></span><br></d=
iv><div>The &quot;otherwise&quot; was not meant as &quot;I see a possibilit=
y of changing the meaning of existing syntax&quot; :). I meant that (args&a=
mp;&amp;)... might actually still be possible. I do think it&#39;s iffy.</d=
iv></div></blockquote><div><br></div><div>What the problem might be?</div><=
div><font face=3D"courier new,monospace"></font><br></div><div><font face=
=3D"courier new,monospace">auto c =3D a&amp;&amp; &amp;&amp; b;</font></div=
><div><font face=3D"courier new,monospace"></font><br></div><font face=3D"c=
ourier new,monospace">template&lt;class... T&gt;<br>auto sum(T&amp;&amp;...=
 args) {<br>=C2=A0return (args&amp;&amp; &amp;&amp; ... &amp;&amp; T{});=C2=
=A0<br>}</font><div>=C2=A0</div><div>These will do what it&#39;s expected. =
They look a bit funny, but not <i>that</i> funny.=C2=A0</div><div><br></div=
><blockquote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;bord=
er-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div><br></div><d=
iv>Everyone:</div><div><br></div><div>I do think &quot;forward&quot; needs =
more love, and the intersection with move might or might not make sense, I&=
#39;m not decided at this point. Both sides of the debate are valid, imo, a=
nd it really depends on the final syntax for <i>forward </i>if extending it=
 to move makes sense.</div></div></blockquote><div><br></div><div>I am yet =
to hear any objections to merger outside the dropping of &quot;exactly&quot=
; in &quot;know <i>exactly </i>what going on&quot;.=C2=A0</div><div>That is=
 tiny price to pay for the 4+1 pretty solid pros I have given, especially c=
onsidering - <i>you have no decisions to make, based on that information</i=
>.</div><div><br></div><div>And don&#39;t forget, you are an expert, you ar=
e using thins for 10 years, you feel at home and only annoyances stick up f=
or you (with forward).</div><div>But for a new user it is a different story=
.. Essentially one less lesson to learn.=C2=A0<br></div><div><br></div><div>=
=C2=A0</div><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"><div><=
br></div><div>In fact, if the &#39;&amp;&amp;&#39; unary postifx worked, th=
en std::move would *not* be covered by it, as &amp;&amp;-collapsing rules w=
ould have to be obeyed, and an lvalue with a &amp;&amp;-specifier decays in=
to a reference. (&amp; &amp;&amp; -&gt; &amp;)</div></div></blockquote><div=
><br></div><div>I do not understand your point. What reference collapsing h=
as to do with an operator?</div><div>=C2=A0</div><blockquote class=3D"gmail=
_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padd=
ing-left:1ex"><div dir=3D"ltr"><div><br></div><div>... if this nips postfix=
 &amp;&amp; in the bud, I&#39;m fine with that :).</div><div><br></div><div=
>Also, I meant =3D&gt; as prefix. Postfix unary operators are *weird*.</div=
></div></blockquote><div><br></div><div>The problem will be as in [x=3D=3D&=
gt;y] it will visually represent, well, exactly the opposite :)</div><div><=
br></div><div>As for the postfix - they are the solution to the problem, fo=
r 4 reasons.</div><div><br></div><div>1. The highest possible precedence wh=
ich is AWAYS what you want here.=C2=A0</div><div>2. Keep the clean the lhs =
clean to not visually confuse on assignment and keep the rhs &quot;dirty&qu=
ot; as<font face=3D"courier new,monospace"> img&amp;&amp;.flipped()</font> =
or <font face=3D"courier new,monospace">func&amp;&amp;(args&amp;&amp;=E2=80=
=A6)</font>To nicely indicate &quot;just before you make this call&quot; no=
tion</div><div>3. The are not common, so they do tend to draw attention.</d=
iv><div>4. The fact that the op is <i>after </i>the variable reinforces the=
 reminder &quot;this is end of line&quot;, &quot;the variable was before me=
&quot;. I am ending it, do not use after me.</div><div><br></div><div>As yo=
u can see all 4 apply to both move and forward equally. That is because, th=
e fact that it is and-of-line is more important then what was in the train.=
=C2=A0</div><div>It really is.</div><div>=C2=A0</div><blockquote class=3D"g=
mail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;=
padding-left:1ex"><div dir=3D"ltr"><div><br></div><div>G</div><div><br></di=
v><div><br></div></div><div><br><div class=3D"gmail_quote">On Mon, May 28, =
2018 at 6:40 PM, Nicol Bolas <span dir=3D"ltr">&lt;<a rel=3D"nofollow">jmck=
....@gmail.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div =
dir=3D"ltr"><span>On Monday, May 28, 2018 at 1:11:42 PM UTC-4, Ga=C5=A1per =
A=C5=BEman 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">I=
 forsee a fight to distinguish the unary &amp;&amp; from the binary &amp;&a=
mp; in fold expressions, but otherwise...</div></blockquote><div><br></div>=
</span><div>I don&#39;t think there <i>is</i> an &quot;otherwise&quot; at t=
hat point. If &amp;&amp;... already has a meaning, that&#39;s the end of th=
e conversation. Backwards incompatible changes for this are probably a non-=
starter.</div><div><br></div><div>Indeed, the problem of fold expressions w=
ith post-fix operators like this is going to crop up with a lot of possible=
 operators.</div></div><span>

<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 rel=3D"nofollow">std-proposal...@isocpp.org</a>.<br>
To post to this group, send email to <a rel=3D"nofollow">std-pr...@isocpp.o=
rg</a>.<br></span>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/70fe7dc7-b8a6-4498-9aa6-f88e6af06506%=
40isocpp.org?utm_medium=3Demail&amp;utm_source=3Dfooter" rel=3D"nofollow" t=
arget=3D"_blank">https://groups.google.com/a/isocpp.org/d/msgid/std-proposa=
ls/70fe7dc7-b8a6-4498-9aa6-f88e6af06506%40isocpp.org</a>.<br>
</blockquote></div><br></div>
</blockquote></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" 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/0c4f8aa4-6b4f-4fe3-a02a-ef33eae990a8%=
40isocpp.org?utm_medium=3Demail&amp;utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/0c4f8aa4-6b4f-=
4fe3-a02a-ef33eae990a8%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&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" 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/CALmDwq0FzcxOdmG2GtZRDO70X%3D1j9qEUnL=
-gqB66606vSU%3D_eQ%40mail.gmail.com?utm_medium=3Demail&amp;utm_source=3Dfoo=
ter" target=3D"_blank">https://groups.google.com/a/isocpp.org/d/msgid/std-p=
roposals/CALmDwq0FzcxOdmG2GtZRDO70X%3D1j9qEUnL-gqB66606vSU%3D_eQ%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&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/CALvx3hYcWKh-_1t298oPx7xThDaHab5Dy354=
vzCwTdswBnMJoA%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">htt=
ps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CALvx3hYcWKh-_1t2=
98oPx7xThDaHab5Dy354vzCwTdswBnMJoA%40mail.gmail.com</a>.<br />

--000000000000c08aac056d4b8fd3--

.
