220 39944 <e6770d93-d3d7-464c-8414-2c5dfd07789d@isocpp.org> article
Path: news.gmane.org!.POSTED!not-for-mail
From: mihailnajdenov@gmail.com
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Re: Named Parameters for C++
Date: Tue, 21 Aug 2018 01:04:26 -0700 (PDT)
Lines: 738
Approved: news@gmane.org
Message-ID: <e6770d93-d3d7-464c-8414-2c5dfd07789d@isocpp.org>
References: <CAPuuy5eBx1ybcPjS6dNsk7n1_c2uhdRBS19qr=q5cj3cTURnLQ@mail.gmail.com>
 <1708615.QdClGnisbJ@tjmaciei-mobl1>
 <60fba045-252b-486e-92e0-03c08b6d5a35@wanadoo.fr>
 <1925737.EHUJpxQoH7@tjmaciei-mobl1>
 <4df1f86f-cdee-5275-bdd1-b53f2f10bef8@wanadoo.fr>
 <plb9h7$r0c$1@blaine.gmane.org>
 <7e07b857-8be0-f0b4-79e2-32d0f2d8e823@wanadoo.fr>
 <7d28cd24-b43d-4e24-876b-a04adcbbe867@isocpp.org>
 <19c6eb56-2188-b849-6ea1-87b37cb546de@wanadoo.fr>
 <3fc9fb1a-8803-4bcf-b928-c855e76f880e@isocpp.org>
 <01a106d3-cdaa-e348-2275-4222eed34dda@wanadoo.fr>
 <67ab8a8c-4a0c-4b4f-8ea1-56822e660517@isocpp.org>
 <0d02cfac-0504-62d2-9835-b400daff972b@wanadoo.fr>
 <9f3550db-0cce-4259-85ef-428d8cfba63c@isocpp.org>
 <89483da2-1435-49ef-94ea-d9d90fbac549@isocpp.org>
 <333693b1-38a8-424f-bc15-0b36131b97f4@isocpp.org>
 <a9c81a6a-3fdb-41c3-afee-9e5041f6815f@isocpp.org>
 <371d2665-ee4b-4599-9d83-1d271312c5a8@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_1919_1883430474.1534838666602"
X-Trace: blaine.gmane.org 1534838545 8910 195.159.176.226 (21 Aug 2018 08:02:25 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Tue, 21 Aug 2018 08:02:25 +0000 (UTC)
Cc: jmckesson@gmail.com, mihailnajdenov@gmail.com, bop@gmb.dk
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBCUJ3A7GRAPRBC4P57NQKGQEMPFVFJY@isocpp.org Tue Aug 21 10:02:21 2018
Return-path: <std-proposals+bncBCUJ3A7GRAPRBC4P57NQKGQEMPFVFJY@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-yb0-f199.google.com ([209.85.213.199])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBCUJ3A7GRAPRBC4P57NQKGQEMPFVFJY@isocpp.org>)
	id 1fs1cI-000273-De
	for gclcip-std-proposals@m.gmane.org; Tue, 21 Aug 2018 10:02:18 +0200
Original-Received: by mail-yb0-f199.google.com with SMTP id i15-v6sf9323699ybk.18
        for <gclcip-std-proposals@m.gmane.org>; Tue, 21 Aug 2018 01:04:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=date:from:to:cc:message-id:in-reply-to:references:subject
         :mime-version:x-original-sender:reply-to:precedence:mailing-list
         :list-id:list-post:list-help:list-archive:list-subscribe
         :list-unsubscribe;
        bh=0uPFiFaFypDGie7vut3xpP+rYouRFHBYaJixtVcqVkg=;
        b=brUiTTWScsepkNGDopXeCFw1PYJN/+oq7t+Q5qoGDh9NzfcByZpf30a2lY+fgAtzIO
         EYEXlHfpa821bn3wEOub5SfqKSbEJ3XRiwo21XWQb94PzpMbI+YUJ9xFI/vACtqZaSuv
         //jihyQKF3/kDK/kj9TTgQjJADB2wMYrQpeT1VJKrsGYUINk5F3MkOuH7AOfs1qlnyNE
         IkoH4XaGOllzZTSOGUte8g1OeK8vovqw1sxvBiHA+yl4Xr292bEiT3ALTeVGvmrqQ6em
         NmbBBVlKiJ97AXsAf/om7/xcLN/jYPv4L1CX2TscWVsMW8dfiddwLvpZbojU8vUA0tvf
         9Oqw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20161025;
        h=date:from:to:cc:message-id:in-reply-to:references:subject
         :mime-version:x-original-sender:reply-to:precedence:mailing-list
         :list-id:list-post:list-help:list-archive:list-subscribe
         :list-unsubscribe;
        bh=0uPFiFaFypDGie7vut3xpP+rYouRFHBYaJixtVcqVkg=;
        b=ctVMz/7RMtIQilt7PIE+hNHGj5vGq2PZ/xt3Ry+ZN4JqRlebBJTg4VLvCJaiVYI9yt
         bLRIMH3Cm3YCnB1IEGbaxTrxdw4LC4n9a7RkeV2ZriBGJwBVuxHOFTOO2YdJS5UT07Pk
         MdHIR8QzdOvx55zjd7t5P96uBop4x5S70hWFQmY5K5FWLYtc26ZFvJXSeCtXYJJbehjk
         806YFFNUgmTgiT357WZmJLr8+c+1pRaFLKj/Oo2bd3EMgieKKu7ST+NQyIVkHPGKws01
         yWxoIH34lGOc7jDRKkucC5blz2Vs51NmCHoN9kknEHPfx13VxBjrVpjVpWXtpZmeWmpB
         l/lQ==
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:cc:message-id:in-reply-to
         :references: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=0uPFiFaFypDGie7vut3xpP+rYouRFHBYaJixtVcqVkg=;
        b=eiU1VjCQ48P2OaUKkflFvDidLL9jYDci+jeFyikW/dM9q7flb869QkjWoBfLMuvoQm
         nsPW+5RZUq3ZBv1nsqxvwspZYq1aytJP9jAXsYkPoJg0DNDrWWqpKyc9aPjhb35PnKQz
         jychdNq7vXoVGTHKl0/srSq1ULPo9tRfZTcwDrItQjwnFNlwbkRtl6vMXt6yRIlpOdjs
         9K6I03jSmIw9BRsToX6T26NvR+WE4ZkH5NKL/6uEYH4V6AFVxI3HeTpORQCrGtxt92HV
         Kb0Hoffh8nxpUwSk1uqp9K3uQVFmLYgLA5J+TF0jl8hk2zTI/GK7cSrdVPBlGXIO0cEW
         7VpA==
X-Gm-Message-State: AOUpUlHJcUmO9qInm9XJOHGb5Zztc6ufpNY+n+Y9WtCRADqZITNBMe4H
	ZXU/OCZTywEvS0DvbkpHDzPhQw==
X-Google-Smtp-Source: AA+uWPxPIl6u4rrKBWNU0PTXlIaYb/AZEwx++ATWg2nDiYjl0WrUVZiyxERIO0gczbsMoFHvNHZhpw==
X-Received: by 2002:a81:6102:: with SMTP id v2-v6mr2441017ywb.119.1534838668761;
        Tue, 21 Aug 2018 01:04:28 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 2002:a25:888b:: with SMTP id d11-v6ls4370253ybl.1.gmail; Tue, 21
 Aug 2018 01:04:27 -0700 (PDT)
X-Received: by 2002:a25:4ec6:: with SMTP id c189-v6mr568308ybb.6.1534838667375;
        Tue, 21 Aug 2018 01:04:27 -0700 (PDT)
In-Reply-To: <371d2665-ee4b-4599-9d83-1d271312c5a8@isocpp.org>
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:39944
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/39944>

------=_Part_1919_1883430474.1534838666602
Content-Type: multipart/alternative; 
	boundary="----=_Part_1920_1938981769.1534838666602"

------=_Part_1920_1938981769.1534838666602
Content-Type: text/plain; charset="UTF-8"



On Tuesday, August 21, 2018 at 4:52:56 AM UTC+3, Nicol Bolas wrote:
>
> On Monday, August 20, 2018 at 4:18:34 PM UTC-4, mihailn...@gmail.com 
> wrote:
>>
>> On Monday, August 20, 2018 at 9:45:02 PM UTC+3, Nicol Bolas wrote:
>>>
>>> On Monday, August 20, 2018 at 12:20:20 PM UTC-4, mihailn...@gmail.com 
>>> wrote:
>>>>
>>>> Are sure about that? Argument rearrangement is doable without changing 
>>>> the signature (a.k.a. strong)
>>>>
>>>
>>> Maybe we have very different ideas about what "strong named parameters" 
>>> means. The question of "changing the signature" is not the distinction 
>>> between "strong" and "weak". At least, it's not the distinction that I'm 
>>> talking about it.
>>>
>>> "Weak named parameters" to me refers to named parameters which are all 
>>> of the following:
>>>
>>> 1. Optional. You can call a function that has named parameters without 
>>> naming the parameter(s) at the call site.
>>> 2. Ordered. The order of the arguments must match the parameter order of 
>>> the function, regardless of the names you specify at the call site.
>>> 3. Overload-neutral. The presence or absence of names at the call site 
>>> has no effect on function overloading.
>>>
>>> Essentially, if your rules require that all named parameter function 
>>> calls will invoke the same function with the same behavior if you stripped 
>>> out all of the names, then the named parameter proposal is "weak".
>>>
>>> Any named parameter feature which imposes rules antithetical to at least 
>>> one of the above is "strong". With the strongest being the antithesis to 
>>> all of them.
>>>
>>
>> I see, for you weak refers to the notion the call is the same, but 
>> unchecked, without them.
>>
>> For me strong is referring to "does it introduce a new signature", the 
>> same way strong typedef introduces a new type. Everything else is weak as 
>> it is about the compiler not the code.
>>
>
> That's not what you said earlier 
> <https://groups.google.com/a/isocpp.org/d/msg/std-proposals/MbDT0vsA2j0/1VPQM7AsAAAJ>
> :
>
> Also, this obviously does not address the named arguments, *that are 
>> optional, the "weak" ones*, so this solution will not make everyone 
>> happy. 
>>
>
> Emphasis added. And there's this post 
> <https://groups.google.com/a/isocpp.org/d/msg/std-proposals/MbDT0vsA2j0/uWG77JxeDQAJ>
> :
>
> //weak argument names, not mandatory 
>>
> ... 
>>
> //strong argument name, adds an overload, not ignorable 
>>
>
> Yes, that post is talking about how you would declare weak names 
> differently from strong names, but it's also talking about how they get 
> used at the call site: "not mandatory" vs. "not ignorable".
>

There is no contradiction, they are optional, and ignorable by the user (he 
might not use them). 
Now, it depends on how much features they have, they might also be as weak 
as you assume they are, so they are (can be) ignored by the compiler as 
well and the call is the same.

Most of the time here we talked about these weakest ones, and considered 
"extra features" as "bonuses".

For me personally strong were always the one changing the signature, that's 
why the first post about tags-as-labels was called "Strong named arguments 
as tag overloads"

And weak for me were not rearranging or skipping, but having 
defaulted-by-naming f(a:, b:, 10) 
 
Of course even these are not ignorable as the call will fail without them. 
Probably using the word ignorable was not correct. 

In any case weak names are optional. 
This is not to say, they do not affect overloading, they do, but only on 
the call site.

void func(int a, int b);
void func(int a, int b: b=1, int c: c=2);

func(1, 3); //< overload 1
func(1, b: 3); //< overload 2
func(1, c: 3); //< overload 2


> Changing the signature is a clear boundary in both semantics and 
>> implementation.
>>
> But in the realm of non-changing-the-signature names, a lot can be done, 
>> granted the calls *will* differ w/ and w/o names.
>>
>
> I think you're too focused on signature as the notion of a function's 
> identity. There are aspects of functions which are not their signature yet 
> directly relate to its identity.
>
> Return values. If you declare two functions with the same name and 
> signatures with different return values, then you get a compile error. 
> `noexcept` works that way too; you can't be inconsistent about that. Both 
> of these are part of the function's type, but not its signature (though 
> `noexcept` can be cast away).
>
> Contracts affect neither type nor signature, but even that requires some 
> basic consistency. You can declare contracts on a function or not. But all 
> contract declarations for the same function must be consistent.
>
> If a parameter name can be used as a syntactic modifier when calling the 
> function (for the purposes of this discussion, anything which affects 
> actual code generation. This includes reordering of arguments), then that 
> name ought to be, if not part of the function's type, then at least have as 
> much consistency as its contracts. That is, if you want to be able to 
> reorder parameters, then the function should consistently assign each 
> parameter a single name or a single "unnamed".
>


In the original post about weak arguments, I suggested they obey the rules 
of default arguments - you name your arguments only in the first 
declaration. No names afterwards, not even the same. 

auto child(name mother: mom, name dad); 

// auto child(name mother: mom, name dad); *//< error*
// auto child(name mom, name father: dad); *//< error*
auto child(name mutter, vater); *//< OK*
auto child(name mother, name father) *//< OK*
{ 
  // implementation
}
 
This seems the be the most consistent approach as (weak) named arguments 
ultimately inhabit *exactly* the same design space as default arguments - a 
compiler helper.

With default arguments the compiler is only obligated to copy-paste the 
default expression if we don't pass a value.

With names it is a matter of what features we want to have:

   - to only name-check
   - to paste in place of name-only
   - to paste on omission
   - to rearrange
   



> If names can be inconsistent and still affect syntax, bad things result.
>
> Should it be done is a different matter, this is a debate as heated as the 
>> one about signature - some people consider names useless if they don't 
>> rearrange/skip defaults, some are happy with just checking alone.  
>>
>

-- 
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/e6770d93-d3d7-464c-8414-2c5dfd07789d%40isocpp.org.

------=_Part_1920_1938981769.1534838666602
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><br>On Tuesday, August 21, 2018 at 4:52:56 AM UTC+3, N=
icol Bolas wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margi=
n-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"l=
tr">On Monday, August 20, 2018 at 4:18:34 PM UTC-4, <a>mihailn...@gmail.com=
</a> 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">On Mond=
ay, August 20, 2018 at 9:45:02 PM UTC+3, Nicol Bolas wrote:<blockquote clas=
s=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc =
solid;padding-left:1ex"><div dir=3D"ltr">On Monday, August 20, 2018 at 12:2=
0:20 PM UTC-4, <a>mihailn...@gmail.com</a> wrote:<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></div></div></blockquote></div></blockq=
uote><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"><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #c=
cc solid;padding-left:1ex"><div dir=3D"ltr"><div></div><div><div>Are sure a=
bout that? Argument rearrangement is doable without changing the signature =
(a.k.a. strong)</div></div></div></blockquote><div><br></div><div>Maybe we =
have very different ideas about what &quot;strong named parameters&quot; me=
ans. The question of &quot;changing the signature&quot; is not the distinct=
ion between=20
&quot;strong&quot; and &quot;weak&quot;. At least, it&#39;s not the distinc=
tion that I&#39;m talking about it.</div><div><br></div><div>&quot;Weak nam=
ed parameters&quot; to me refers to named parameters which are all of the f=
ollowing:</div><div><br></div><div>1. Optional. You can call a function tha=
t has named parameters without naming the parameter(s) at the call site.</d=
iv><div>2. Ordered. The order of the arguments must match the parameter ord=
er of the function, regardless of the names you specify at the call site.<b=
r></div><div>3. Overload-neutral. The presence or absence of names at the c=
all site has no effect on function overloading.</div><div><br></div><div>Es=
sentially, if your rules require that all named parameter function calls wi=
ll invoke the same function with the same behavior if you stripped out all =
of the names, then the named parameter proposal is &quot;weak&quot;.<br></d=
iv><div><br></div><div></div><div>Any named parameter feature which imposes=
 rules antithetical to at least one of the above is &quot;strong&quot;. Wit=
h the strongest being the antithesis to all of them.<br></div></div></block=
quote><div><br></div><div>I see, for you weak refers to the notion the call=
 is the same, but unchecked, without them.</div><div><br></div><div>For me =
strong is referring to &quot;does it introduce a new signature&quot;, the s=
ame way strong typedef introduces a new type. Everything else is weak as it=
 is about the compiler not the code.</div></div></blockquote><div><br></div=
><div>That&#39;s not what <a onmousedown=3D"this.href=3D&#39;https://groups=
..google.com/a/isocpp.org/d/msg/std-proposals/MbDT0vsA2j0/1VPQM7AsAAAJ&#39;;=
return true;" onclick=3D"this.href=3D&#39;https://groups.google.com/a/isocp=
p.org/d/msg/std-proposals/MbDT0vsA2j0/1VPQM7AsAAAJ&#39;;return true;" href=
=3D"https://groups.google.com/a/isocpp.org/d/msg/std-proposals/MbDT0vsA2j0/=
1VPQM7AsAAAJ" target=3D"_blank" rel=3D"nofollow">you said earlier</a>:</div=
><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Also=
, this obviously does not address the named arguments, <b>that are=20
optional, the &quot;weak&quot; ones</b>, so this solution will not make eve=
ryone=20
happy. <br></div></blockquote><div><br></div><div>Emphasis added. And there=
&#39;s <a onmousedown=3D"this.href=3D&#39;https://groups.google.com/a/isocp=
p.org/d/msg/std-proposals/MbDT0vsA2j0/uWG77JxeDQAJ&#39;;return true;" oncli=
ck=3D"this.href=3D&#39;https://groups.google.com/a/isocpp.org/d/msg/std-pro=
posals/MbDT0vsA2j0/uWG77JxeDQAJ&#39;;return true;" href=3D"https://groups.g=
oogle.com/a/isocpp.org/d/msg/std-proposals/MbDT0vsA2j0/uWG77JxeDQAJ" target=
=3D"_blank" rel=3D"nofollow">this post</a>:<br></div><div><br></div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p=
x solid rgb(204,204,204);padding-left:1ex"><div>//weak argument names, not =
mandatory <br></div></blockquote><blockquote class=3D"gmail_quote" style=3D=
"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le=
ft:1ex"><div>... <br></div></blockquote><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex"><div></div><div>//strong argument name, adds an overload, no=
t ignorable <br></div></blockquote><div><br></div><div>Yes, that post is ta=
lking about how you would declare weak names differently from strong names,=
 but it&#39;s also talking about how they get used at the call site: &quot;=
not mandatory&quot; vs. &quot;not ignorable&quot;.</div></div></blockquote>=
<div><br></div><div>There is no contradiction, they are optional, and ignor=
able by the user (he might not use them).=C2=A0</div><div>Now, it depends o=
n how much features they have, they might also be as weak as you assume the=
y are, so they are (can be) ignored by the compiler as well and the call is=
 the same.</div><div><br></div><div>Most of the time here we talked about t=
hese weakest ones, and considered &quot;extra features&quot; as &quot;bonus=
es&quot;.</div><div><br></div><div>For me personally strong were always the=
 one changing the signature, that&#39;s why the first post about tags-as-la=
bels was called &quot;Strong named arguments as tag overloads&quot;</div><d=
iv><br></div><div>And weak for me were not rearranging or skipping, but hav=
ing defaulted-by-naming <font face=3D"courier new,monospace">f(a:, b:, 10)=
=C2=A0</font></div><div>=C2=A0</div><div>Of course even these are not ignor=
able as the call will fail without them. Probably using the word ignorable =
was not correct.=C2=A0</div><div><br></div><div>In any case weak names are =
optional.=C2=A0</div><div>This is not to say, they do not affect overloadin=
g, they do, but only on the call site.</div><div><br></div><div><span style=
=3D"text-align: left; color: rgb(34, 34, 34); text-transform: none; text-in=
dent: 0px; letter-spacing: normal; font-size: 13px; font-style: normal; fon=
t-variant: normal; font-weight: 400; text-decoration: none; word-spacing: 0=
px; display: inline !important; white-space: normal; orphans: 2; float: non=
e; -webkit-text-stroke-width: 0px; background-color: transparent;"><font fa=
ce=3D"courier new,monospace">void func(int a, int b);</font></span><b></b><=
i></i><u></u><sub></sub><sup></sup><strike></strike><br></div><div><font fa=
ce=3D"courier new,monospace">void func(int a, int b: b=3D1, int c: c=3D2);<=
/font></div><div><font face=3D"courier new,monospace"></font><br></div><div=
><font face=3D"courier new,monospace">func(1, 3); //&lt; overload 1</font><=
/div><div><span style=3D"text-align: left; color: rgb(34, 34, 34); text-tra=
nsform: none; text-indent: 0px; letter-spacing: normal; font-size: 13px; fo=
nt-style: normal; font-variant: normal; font-weight: 400; text-decoration: =
none; word-spacing: 0px; display: inline !important; white-space: normal; o=
rphans: 2; float: none; -webkit-text-stroke-width: 0px; background-color: t=
ransparent;"><font face=3D"courier new,monospace">func(1, b: 3);<span style=
=3D"display: inline !important; float: none; background-color: transparent;=
 color: rgb(34, 34, 34); font-family: courier new,monospace; font-size: 13p=
x; font-style: normal; font-variant: normal; font-weight: 400; letter-spaci=
ng: normal; orphans: 2; text-align: left; text-decoration: none; text-inden=
t: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: =
normal; word-spacing: 0px;"> //&lt; overload 2</span></font></span><br></di=
v><div><span style=3D"background-color: transparent; border-bottom-color: r=
gb(34, 34, 34); border-bottom-style: none; border-bottom-width: 0px; border=
-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; b=
order-image-source: none; border-image-width: 1; border-left-color: rgb(34,=
 34, 34); border-left-style: none; border-left-width: 0px; border-right-col=
or: rgb(34, 34, 34); border-right-style: none; border-right-width: 0px; bor=
der-top-color: rgb(34, 34, 34); border-top-style: none; border-top-width: 0=
px; color: rgb(34, 34, 34); display: inline; float: none; font-family: &amp=
;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-size: =
13px; font-style: normal; font-variant: normal; font-weight: 400; letter-sp=
acing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; mar=
gin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; padding-r=
ight: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-=
indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-sp=
ace: normal; word-spacing: 0px;"><font face=3D"courier new,monospace" style=
=3D"border-bottom-color: rgb(34, 34, 34); border-bottom-style: none; border=
-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; b=
order-image-slice: 100%; border-image-source: none; border-image-width: 1; =
border-left-color: rgb(34, 34, 34); border-left-style: none; border-left-wi=
dth: 0px; border-right-color: rgb(34, 34, 34); border-right-style: none; bo=
rder-right-width: 0px; border-top-color: rgb(34, 34, 34); border-top-style:=
 none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-=
right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; paddin=
g-right: 0px; padding-top: 0px;">func(1, c: 3);<span style=3D"background-co=
lor: transparent; border-bottom-color: rgb(34, 34, 34); border-bottom-style=
: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repe=
at: stretch; border-image-slice: 100%; border-image-source: none; border-im=
age-width: 1; border-left-color: rgb(34, 34, 34); border-left-style: none; =
border-left-width: 0px; border-right-color: rgb(34, 34, 34); border-right-s=
tyle: none; border-right-width: 0px; border-top-color: rgb(34, 34, 34); bor=
der-top-style: none; border-top-width: 0px; color: rgb(34, 34, 34); display=
: inline; float: none; font-family: courier new,monospace; font-size: 13px;=
 font-style: normal; font-variant: normal; font-weight: 400; letter-spacing=
: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-t=
op: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; padding-right:=
 0px; padding-top: 0px; text-align: left; text-decoration: none; text-inden=
t: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: =
normal; word-spacing: 0px;"> //&lt; overload 2</span></font></span><b></b><=
i></i><u></u><sub></sub><sup></sup><strike></strike><br></div><div><b></b><=
i></i><u></u><sub></sub><sup></sup><strike></strike><br></div><blockquote c=
lass=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><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></div><div>Changing the =
signature is a clear boundary in both semantics and implementation.<br></di=
v></div></blockquote><div></div><blockquote class=3D"gmail_quote" style=3D"=
margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex"><di=
v dir=3D"ltr"><div></div><div></div><div>But in the realm of non-changing-t=
he-signature names, a lot can be done, granted the calls <i>will</i> differ=
 w/ and w/o names.</div></div></blockquote><div><br></div><div>I think you&=
#39;re too focused on signature as the notion of a function&#39;s identity.=
 There are aspects of functions which are not their signature yet directly =
relate to its identity.</div><div><br></div><div>Return values. If you decl=
are two functions with the same name and signatures with different return v=
alues, then you get a compile error. `noexcept` works that way too; you can=
&#39;t be inconsistent about that. Both of these are part of the function&#=
39;s type, but not its signature (though `noexcept` can be cast away).</div=
><div><br></div><div>Contracts affect neither type nor signature, but even =
that requires some basic consistency. You can declare contracts on a functi=
on or not. But all contract declarations for the same function must be cons=
istent.</div><div><br></div><div>If a parameter name can be used as a synta=
ctic modifier when calling the function (for the purposes of this discussio=
n, anything which affects actual code generation. This includes reordering =
of arguments), then that name ought to be, if not part of the function&#39;=
s type, then at least have as much consistency as its contracts. That is, i=
f you want to be able to reorder parameters, then the function should consi=
stently assign each parameter a single name or a single &quot;unnamed&quot;=
..</div></div></blockquote><div><br></div><div><br></div><div>In the origina=
l post about weak arguments, I suggested they obey the rules of default arg=
uments - you name your arguments only in the first declaration. No names af=
terwards, not even the same.=C2=A0</div><div><br></div><div><div style=3D"b=
ackground-color: transparent; border-bottom-color: rgb(34, 34, 34); border-=
bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; borde=
r-image-repeat: stretch; border-image-slice: 100%; border-image-source: non=
e; border-image-width: 1; border-left-color: rgb(34, 34, 34); border-left-s=
tyle: none; border-left-width: 0px; border-right-color: rgb(34, 34, 34); bo=
rder-right-style: none; border-right-width: 0px; border-top-color: rgb(34, =
34, 34); border-top-style: none; border-top-width: 0px; color: rgb(34, 34, =
34); font-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helvetica&amp;quot;,s=
ans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-=
weight: 400; letter-spacing: normal; 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: normal; word-spacing: 0px;"><span style=3D"backg=
round-color: transparent; border-bottom-color: rgb(34, 34, 34); border-bott=
om-style: none; border-bottom-width: 0px; border-image-outset: 0; border-im=
age-repeat: stretch; border-image-slice: 100%; border-image-source: none; b=
order-image-width: 1; border-left-color: rgb(34, 34, 34); border-left-style=
: none; border-left-width: 0px; border-right-color: rgb(34, 34, 34); border=
-right-style: none; border-right-width: 0px; border-top-color: rgb(34, 34, =
34); border-top-style: none; border-top-width: 0px; color: rgb(34, 34, 34);=
 display: inline; float: none; font-size: 13px; font-style: normal; font-va=
riant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px=
; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px=
; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left=
; text-decoration: none; text-indent: 0px; text-transform: none; white-spac=
e: normal; word-spacing: 0px;"><font face=3D"courier new,monospace" style=
=3D"border-bottom-color: rgb(34, 34, 34); border-bottom-style: none; border=
-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; b=
order-image-slice: 100%; border-image-source: none; border-image-width: 1; =
border-left-color: rgb(34, 34, 34); border-left-style: none; border-left-wi=
dth: 0px; border-right-color: rgb(34, 34, 34); border-right-style: none; bo=
rder-right-width: 0px; border-top-color: rgb(34, 34, 34); border-top-style:=
 none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-=
right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; paddin=
g-right: 0px; padding-top: 0px;">auto child(name mother: mom, name dad);=C2=
=A0</font></span></div><div style=3D"background-color: transparent; border-=
bottom-color: rgb(34, 34, 34); border-bottom-style: none; border-bottom-wid=
th: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image=
-slice: 100%; border-image-source: none; border-image-width: 1; border-left=
-color: rgb(34, 34, 34); border-left-style: none; border-left-width: 0px; b=
order-right-color: rgb(34, 34, 34); border-right-style: none; border-right-=
width: 0px; border-top-color: rgb(34, 34, 34); border-top-style: none; bord=
er-top-width: 0px; color: rgb(34, 34, 34); font-family: &amp;quot;Arial&amp=
;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-size: 13px; font-styl=
e: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; =
margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; o=
rphans: 2; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padd=
ing-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; te=
xt-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; wo=
rd-spacing: 0px;"><span style=3D"background-color: transparent; border-bott=
om-color: rgb(34, 34, 34); border-bottom-style: none; border-bottom-width: =
0px; border-image-outset: 0; border-image-repeat: stretch; border-image-sli=
ce: 100%; border-image-source: none; border-image-width: 1; border-left-col=
or: rgb(34, 34, 34); border-left-style: none; border-left-width: 0px; borde=
r-right-color: rgb(34, 34, 34); border-right-style: none; border-right-widt=
h: 0px; border-top-color: rgb(34, 34, 34); border-top-style: none; border-t=
op-width: 0px; color: rgb(34, 34, 34); display: inline; float: none; font-s=
ize: 13px; font-style: normal; font-variant: normal; font-weight: 400; lett=
er-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px=
; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0=
px; padding-top: 0px; text-align: left; text-decoration: none; text-indent:=
 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><font =
face=3D"courier new,monospace" style=3D"border-bottom-color: rgb(34, 34, 34=
); border-bottom-style: none; border-bottom-width: 0px; border-image-outset=
: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-s=
ource: none; border-image-width: 1; border-left-color: rgb(34, 34, 34); bor=
der-left-style: none; border-left-width: 0px; border-right-color: rgb(34, 3=
4, 34); border-right-style: none; border-right-width: 0px; border-top-color=
: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; margin-bo=
ttom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bo=
ttom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><br></=
font></span></div><div style=3D"background-color: transparent; border-botto=
m-color: rgb(34, 34, 34); border-bottom-style: none; border-bottom-width: 0=
px; border-image-outset: 0; border-image-repeat: stretch; border-image-slic=
e: 100%; border-image-source: none; border-image-width: 1; border-left-colo=
r: rgb(34, 34, 34); border-left-style: none; border-left-width: 0px; border=
-right-color: rgb(34, 34, 34); border-right-style: none; border-right-width=
: 0px; border-top-color: rgb(34, 34, 34); border-top-style: none; border-to=
p-width: 0px; color: rgb(34, 34, 34); font-family: &amp;quot;Arial&amp;quot=
;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-size: 13px; font-style: no=
rmal; font-variant: normal; font-weight: 400; letter-spacing: normal; margi=
n-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphan=
s: 2; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-t=
op: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-tr=
ansform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-sp=
acing: 0px;"><font face=3D"courier new,monospace">// <span style=3D"border-=
bottom-color: rgb(34, 34, 34); border-bottom-style: none; border-bottom-wid=
th: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image=
-slice: 100%; border-image-source: none; border-image-width: 1; border-left=
-color: rgb(34, 34, 34); border-left-style: none; border-left-width: 0px; b=
order-right-color: rgb(34, 34, 34); border-right-style: none; border-right-=
width: 0px; border-top-color: rgb(34, 34, 34); border-top-style: none; bord=
er-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px;=
 margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0p=
x; padding-top: 0px;"><font style=3D"border-bottom-color: rgb(34, 34, 34); =
border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0=
; border-image-repeat: stretch; border-image-slice: 100%; border-image-sour=
ce: none; border-image-width: 1; border-left-color: rgb(34, 34, 34); border=
-left-style: none; border-left-width: 0px; border-right-color: rgb(34, 34, =
34); border-right-style: none; border-right-width: 0px; border-top-color: r=
gb(34, 34, 34); border-top-style: none; border-top-width: 0px; margin-botto=
m: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-botto=
m: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">auto chil=
d(name mother: mom, name dad); <i>//&lt; error</i></font></span></font></di=
v><div style=3D"background-color: transparent; border-bottom-color: rgb(34,=
 34, 34); border-bottom-style: none; border-bottom-width: 0px; border-image=
-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-=
image-source: none; border-image-width: 1; border-left-color: rgb(34, 34, 3=
4); border-left-style: none; border-left-width: 0px; border-right-color: rg=
b(34, 34, 34); border-right-style: none; border-right-width: 0px; border-to=
p-color: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; co=
lor: rgb(34, 34, 34); font-family: &amp;quot;Arial&amp;quot;,&amp;quot;Helv=
etica&amp;quot;,sans-serif; font-size: 13px; font-style: normal; font-varia=
nt: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; m=
argin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; padding-bo=
ttom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-al=
ign: left; text-decoration: none; text-indent: 0px; text-transform: none; -=
webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><sp=
an style=3D"background-color: transparent; border-bottom-color: rgb(34, 34,=
 34); border-bottom-style: none; border-bottom-width: 0px; border-image-out=
set: 0; border-image-repeat: stretch; border-image-slice: 100%; border-imag=
e-source: none; border-image-width: 1; border-left-color: rgb(34, 34, 34); =
border-left-style: none; border-left-width: 0px; border-right-color: rgb(34=
, 34, 34); border-right-style: none; border-right-width: 0px; border-top-co=
lor: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; color:=
 rgb(34, 34, 34); display: inline; float: none; font-size: 13px; font-varia=
nt: normal; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; m=
argin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; =
padding-right: 0px; padding-top: 0px; text-align: left; text-indent: 0px; t=
ext-transform: none; white-space: normal; word-spacing: 0px;"><font style=
=3D"border-bottom-color: rgb(34, 34, 34); border-bottom-style: none; border=
-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; b=
order-image-slice: 100%; border-image-source: none; border-image-width: 1; =
border-left-color: rgb(34, 34, 34); border-left-style: none; border-left-wi=
dth: 0px; border-right-color: rgb(34, 34, 34); border-right-style: none; bo=
rder-right-width: 0px; border-top-color: rgb(34, 34, 34); border-top-style:=
 none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-=
right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; paddin=
g-right: 0px; padding-top: 0px;"><font face=3D"courier new,monospace"><span=
 style=3D"background-color: transparent; border-bottom-color: rgb(34, 34, 3=
4); border-bottom-style: none; border-bottom-width: 0px; border-image-outse=
t: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-=
source: none; border-image-width: 1; border-left-color: rgb(34, 34, 34); bo=
rder-left-style: none; border-left-width: 0px; border-right-color: rgb(34, =
34, 34); border-right-style: none; border-right-width: 0px; border-top-colo=
r: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; color: r=
gb(34, 34, 34); display: inline; float: none; font-family: &amp;quot;Arial&=
amp;quot;,&amp;quot;Helvetica&amp;quot;,sans-serif; font-size: 13px; font-s=
tyle: normal; font-variant: normal; font-weight: 400; letter-spacing: norma=
l; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px=
; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: =
0px; text-align: left; text-decoration: none; text-indent: 0px; text-transf=
orm: none; white-space: normal; word-spacing: 0px;">// </span><span style=
=3D"border-bottom-color: rgb(34, 34, 34); border-bottom-style: none; border=
-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; b=
order-image-slice: 100%; border-image-source: none; border-image-width: 1; =
border-left-color: rgb(34, 34, 34); border-left-style: none; border-left-wi=
dth: 0px; border-right-color: rgb(34, 34, 34); border-right-style: none; bo=
rder-right-width: 0px; border-top-color: rgb(34, 34, 34); border-top-style:=
 none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-=
right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; paddin=
g-right: 0px; padding-top: 0px;"><font style=3D"border-bottom-color: rgb(34=
, 34, 34); border-bottom-style: none; border-bottom-width: 0px; border-imag=
e-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border=
-image-source: none; border-image-width: 1; border-left-color: rgb(34, 34, =
34); border-left-style: none; border-left-width: 0px; border-right-color: r=
gb(34, 34, 34); border-right-style: none; border-right-width: 0px; border-t=
op-color: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; m=
argin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; pa=
dding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;=
">auto child(name mom, name father: dad); <i>//&lt; error</i></font></span>=
</font><b style=3D"border-bottom-color: rgb(34, 34, 34); border-bottom-styl=
e: none; border-bottom-width: 0px; border-image-outset: 0; border-image-rep=
eat: stretch; border-image-slice: 100%; border-image-source: none; border-i=
mage-width: 1; border-left-color: rgb(34, 34, 34); border-left-style: none;=
 border-left-width: 0px; border-right-color: rgb(34, 34, 34); border-right-=
style: none; border-right-width: 0px; border-top-color: rgb(34, 34, 34); bo=
rder-top-style: none; border-top-width: 0px; margin-bottom: 0px; margin-lef=
t: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-le=
ft: 0px; padding-right: 0px; padding-top: 0px;"></b><u style=3D"border-bott=
om-color: rgb(34, 34, 34); border-bottom-style: none; border-bottom-width: =
0px; border-image-outset: 0; border-image-repeat: stretch; border-image-sli=
ce: 100%; border-image-source: none; border-image-width: 1; border-left-col=
or: rgb(34, 34, 34); border-left-style: none; border-left-width: 0px; borde=
r-right-color: rgb(34, 34, 34); border-right-style: none; border-right-widt=
h: 0px; border-top-color: rgb(34, 34, 34); border-top-style: none; border-t=
op-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; mar=
gin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; p=
adding-top: 0px;"></u><sub style=3D"border-bottom-color: rgb(34, 34, 34); b=
order-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0;=
 border-image-repeat: stretch; border-image-slice: 100%; border-image-sourc=
e: none; border-image-width: 1; border-left-color: rgb(34, 34, 34); border-=
left-style: none; border-left-width: 0px; border-right-color: rgb(34, 34, 3=
4); border-right-style: none; border-right-width: 0px; border-top-color: rg=
b(34, 34, 34); border-top-style: none; border-top-width: 0px; margin-bottom=
: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom=
: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"></sub><sup=
 style=3D"border-bottom-color: rgb(34, 34, 34); border-bottom-style: none; =
border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stre=
tch; border-image-slice: 100%; border-image-source: none; border-image-widt=
h: 1; border-left-color: rgb(34, 34, 34); border-left-style: none; border-l=
eft-width: 0px; border-right-color: rgb(34, 34, 34); border-right-style: no=
ne; border-right-width: 0px; border-top-color: rgb(34, 34, 34); border-top-=
style: none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; m=
argin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; =
padding-right: 0px; padding-top: 0px;"></sup><strike style=3D"border-bottom=
-color: rgb(34, 34, 34); border-bottom-style: none; border-bottom-width: 0p=
x; border-image-outset: 0; border-image-repeat: stretch; border-image-slice=
: 100%; border-image-source: none; border-image-width: 1; border-left-color=
: rgb(34, 34, 34); border-left-style: none; border-left-width: 0px; border-=
right-color: rgb(34, 34, 34); border-right-style: none; border-right-width:=
 0px; border-top-color: rgb(34, 34, 34); border-top-style: none; border-top=
-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margi=
n-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; pad=
ding-top: 0px;"></strike><br style=3D"border-bottom-color: rgb(34, 34, 34);=
 border-bottom-style: none; border-bottom-width: 0px; border-image-outset: =
0; border-image-repeat: stretch; border-image-slice: 100%; border-image-sou=
rce: none; border-image-width: 1; border-left-color: rgb(34, 34, 34); borde=
r-left-style: none; border-left-width: 0px; border-right-color: rgb(34, 34,=
 34); border-right-style: none; border-right-width: 0px; border-top-color: =
rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; margin-bott=
om: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bott=
om: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"></font><=
/span></div><div style=3D"background-color: transparent; border-bottom-colo=
r: rgb(34, 34, 34); border-bottom-style: none; border-bottom-width: 0px; bo=
rder-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100=
%; border-image-source: none; border-image-width: 1; border-left-color: rgb=
(34, 34, 34); border-left-style: none; border-left-width: 0px; border-right=
-color: rgb(34, 34, 34); border-right-style: none; border-right-width: 0px;=
 border-top-color: rgb(34, 34, 34); border-top-style: none; border-top-widt=
h: 0px; color: rgb(34, 34, 34); font-family: &amp;quot;Arial&amp;quot;,&amp=
;quot;Helvetica&amp;quot;,sans-serif; font-size: 13px; font-style: normal; =
font-variant: normal; font-weight: 400; letter-spacing: normal; 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: normal; word-spacing:=
 0px;"><span style=3D"background-color: transparent; border-bottom-color: r=
gb(34, 34, 34); border-bottom-style: none; border-bottom-width: 0px; border=
-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; b=
order-image-source: none; border-image-width: 1; border-left-color: rgb(34,=
 34, 34); border-left-style: none; border-left-width: 0px; border-right-col=
or: rgb(34, 34, 34); border-right-style: none; border-right-width: 0px; bor=
der-top-color: rgb(34, 34, 34); border-top-style: none; border-top-width: 0=
px; color: rgb(34, 34, 34); display: inline; float: none; font-size: 13px; =
font-style: normal; font-variant: normal; font-weight: 400; letter-spacing:=
 normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-to=
p: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding=
-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-=
transform: none; white-space: normal; word-spacing: 0px;"><font face=3D"cou=
rier new,monospace" style=3D"border-bottom-color: rgb(34, 34, 34); border-b=
ottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border=
-image-repeat: stretch; border-image-slice: 100%; border-image-source: none=
; border-image-width: 1; border-left-color: rgb(34, 34, 34); border-left-st=
yle: none; border-left-width: 0px; border-right-color: rgb(34, 34, 34); bor=
der-right-style: none; border-right-width: 0px; border-top-color: rgb(34, 3=
4, 34); border-top-style: none; border-top-width: 0px; margin-bottom: 0px; =
margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; =
padding-left: 0px; padding-right: 0px; padding-top: 0px;">auto child(name m=
utter, vater); <i>//&lt; OK</i></font></span><b style=3D"border-bottom-colo=
r: rgb(34, 34, 34); border-bottom-style: none; border-bottom-width: 0px; bo=
rder-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100=
%; border-image-source: none; border-image-width: 1; border-left-color: rgb=
(34, 34, 34); border-left-style: none; border-left-width: 0px; border-right=
-color: rgb(34, 34, 34); border-right-style: none; border-right-width: 0px;=
 border-top-color: rgb(34, 34, 34); border-top-style: none; border-top-widt=
h: 0px; color: rgb(34, 34, 34); line-height: normal; margin-bottom: 0px; ma=
rgin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; pa=
dding-left: 0px; padding-right: 0px; padding-top: 0px;"></b><u style=3D"bor=
der-bottom-color: rgb(34, 34, 34); border-bottom-style: none; border-bottom=
-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-i=
mage-slice: 100%; border-image-source: none; border-image-width: 1; border-=
left-color: rgb(34, 34, 34); border-left-style: none; border-left-width: 0p=
x; border-right-color: rgb(34, 34, 34); border-right-style: none; border-ri=
ght-width: 0px; border-top-color: rgb(34, 34, 34); border-top-style: none; =
border-top-width: 0px; color: rgb(34, 34, 34); line-height: normal; margin-=
bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-=
bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"></u>=
<sub style=3D"border-bottom-color: rgb(34, 34, 34); border-bottom-style: no=
ne; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: =
stretch; border-image-slice: 100%; border-image-source: none; border-image-=
width: 1; border-left-color: rgb(34, 34, 34); border-left-style: none; bord=
er-left-width: 0px; border-right-color: rgb(34, 34, 34); border-right-style=
: none; border-right-width: 0px; border-top-color: rgb(34, 34, 34); border-=
top-style: none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0p=
x; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0=
px; padding-right: 0px; padding-top: 0px;"></sub><sup style=3D"border-botto=
m-color: rgb(34, 34, 34); border-bottom-style: none; border-bottom-width: 0=
px; border-image-outset: 0; border-image-repeat: stretch; border-image-slic=
e: 100%; border-image-source: none; border-image-width: 1; border-left-colo=
r: rgb(34, 34, 34); border-left-style: none; border-left-width: 0px; border=
-right-color: rgb(34, 34, 34); border-right-style: none; border-right-width=
: 0px; border-top-color: rgb(34, 34, 34); border-top-style: none; border-to=
p-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; marg=
in-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; pa=
dding-top: 0px;"></sup><strike style=3D"border-bottom-color: rgb(34, 34, 34=
); border-bottom-style: none; border-bottom-width: 0px; border-image-outset=
: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-s=
ource: none; border-image-width: 1; border-left-color: rgb(34, 34, 34); bor=
der-left-style: none; border-left-width: 0px; border-right-color: rgb(34, 3=
4, 34); border-right-style: none; border-right-width: 0px; border-top-color=
: rgb(34, 34, 34); border-top-style: none; border-top-width: 0px; margin-bo=
ttom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bo=
ttom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"></stri=
ke></div><div style=3D"background-color: transparent; border-bottom-color: =
rgb(34, 34, 34); border-bottom-style: none; border-bottom-width: 0px; borde=
r-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; =
border-image-source: none; border-image-width: 1; border-left-color: rgb(34=
, 34, 34); border-left-style: none; border-left-width: 0px; border-right-co=
lor: rgb(34, 34, 34); border-right-style: none; border-right-width: 0px; bo=
rder-top-color: rgb(34, 34, 34); border-top-style: none; border-top-width: =
0px; color: rgb(34, 34, 34); font-family: &amp;quot;Arial&amp;quot;,&amp;qu=
ot;Helvetica&amp;quot;,sans-serif; font-size: 13px; font-style: normal; fon=
t-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom:=
 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; pad=
ding-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: normal; word-spacing: 0p=
x;"><span style=3D"margin: 0px; padding: 0px; border: 0px rgb(34, 34, 34); =
border-image: none; text-align: left; color: rgb(34, 34, 34); text-transfor=
m: none; text-indent: 0px; letter-spacing: normal; font-size: 13px; font-st=
yle: normal; font-variant: normal; font-weight: 400; text-decoration: none;=
 word-spacing: 0px; display: inline; white-space: normal; float: none; back=
ground-color: transparent;"><font face=3D"courier new,monospace">auto child=
(name mother, name father) <i>//&lt; OK</i></font></span></div><b></b><i></=
i><u></u><sub></sub><sup></sup><strike></strike><font face=3D"courier new,m=
onospace">{=C2=A0</font></div><div><font face=3D"courier new,monospace">=C2=
=A0 // implementation</font></div><div><font face=3D"courier new,monospace"=
>}</font><br></div><div>=C2=A0</div><div>This seems the be the most consist=
ent approach as (weak) named arguments ultimately inhabit <i>exactly</i> th=
e same design space as default arguments - a compiler helper.</div><div><br=
></div><div>With default arguments the compiler is only obligated to copy-p=
aste the default expression if we don&#39;t pass a value.</div><div><br></d=
iv><div>With names it is a matter of what features we want to have:</div><u=
l><li>to only name-check</li><li>to paste in place of name-only</li><li>to =
paste on omission<br></li><li>to rearrange<br></li></ul><div><br></div><div=
><br></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"><d=
iv><br></div><div></div><div>If names can be inconsistent and still affect =
syntax, bad things result.</div><div></div><div><br></div><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"><div>Should it be done is a differe=
nt matter, this is a debate as heated as the one about signature - some peo=
ple consider names useless if they don&#39;t rearrange/skip defaults, some =
are happy with just checking alone.=C2=A0 <br></div></div></blockquote></di=
v></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/e6770d93-d3d7-464c-8414-2c5dfd07789d%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/e6770d93-d3d7-464c-8414-2c5dfd07789d=
%40isocpp.org</a>.<br />

------=_Part_1920_1938981769.1534838666602--

------=_Part_1919_1883430474.1534838666602--

.
