220 34185 <e148a17c-acc0-44a3-854b-531b13c0520d@isocpp.org> article
Path: news.gmane.org!.POSTED!not-for-mail
From: Curious <rmn100@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Structured bindings with polymorphic lambdas
Date: Mon, 28 Aug 2017 12:20:29 -0700 (PDT)
Lines: 275
Approved: news@gmane.org
Message-ID: <e148a17c-acc0-44a3-854b-531b13c0520d@isocpp.org>
References: <b8d14aa1-adcb-41d9-8fe8-d70805927161@isocpp.org>
 <8497b31b-7c9d-4334-ac22-0809c958cb93@isocpp.org>
 <15a70d94-e039-4f82-ba01-bde9d3fbacbd@isocpp.org>
 <6b50933d-291b-4b47-8c0c-82c97d9cb406@isocpp.org>
 <348b59eb-c288-482e-a7f4-473d8f1fbfea@isocpp.org>
 <029d244a-cc53-40de-9c2f-59b1bc776c1b@isocpp.org>
 <481b4d44-74e0-4cd3-8141-62d35dea8350@isocpp.org>
 <cfbbbe0f-cace-46ce-977a-ac57b9c3003e@isocpp.org>
 <3509394f-e995-41d1-8fe0-3e7d8ecfe63e@isocpp.org>
 <27932a56-329e-4854-8d6f-e8a4812adadb@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_7146_1600220776.1503948029651"
X-Trace: blaine.gmane.org 1503948032 19053 195.159.176.226 (28 Aug 2017 19:20:32 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Mon, 28 Aug 2017 19:20:32 +0000 (UTC)
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBCNP5RVE2QIBB7WZSHGQKGQESS7D47I@isocpp.org Mon Aug 28 21:20:27 2017
Return-path: <std-proposals+bncBCNP5RVE2QIBB7WZSHGQKGQESS7D47I@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-ua0-f199.google.com ([209.85.217.199])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBCNP5RVE2QIBB7WZSHGQKGQESS7D47I@isocpp.org>)
	id 1dmPaE-0004WH-HS
	for gclcip-std-proposals@m.gmane.org; Mon, 28 Aug 2017 21:20:26 +0200
Original-Received: by mail-ua0-f199.google.com with SMTP id k14sf1304954uad.17
        for <gclcip-std-proposals@m.gmane.org>; Mon, 28 Aug 2017 12:20:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=date:from:to: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=YUyAx6swaz+7Wga2ZnzCJzEA4Pntuekrv0FcDCvUioY=;
        b=gs3IRjg8ZVDGMfzgiKYBUgLYOi6yCVFHG4KSfh1YZPdiT1FTG86sV4lhgVecpO/CpD
         TsmWyNJUdiCAtlzslVwyhO6D1YBp4BddsDLrnR0YIFWnjwH6aO8dL1JjuZQUzP3CvGVY
         RSLL86UQRem1TbIc05AAAzNj9ZRhpKne9jucQ5Pf9kmhl7m9z7Xq5Vr/z+hgpsnzeCF7
         A2SqFXAlY7m8EaQYv4KzUODUXYbHDelZNAfDi1cFvhB15/hAhESZmgXYWZjOgwmain4S
         7teivvFuLu1R18syo4C6s/NUkpgP/4Pcym8hwZykj7KrEghc6e9wT5LJ3P/CDBIqBKwH
         swIA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20161025;
        h=date:from:to: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=YUyAx6swaz+7Wga2ZnzCJzEA4Pntuekrv0FcDCvUioY=;
        b=RZE/TbiOtW72wnD9AcOloiqEJJgLdMWoyClhi4wPyaNl9ly2RXwj5X9LhtcZBvS8WJ
         GG0SHvft2OWe3OwLWxNQu5HtfUs12r35ajbpf5WPEgutiYuZJUsrNHO0jdXGViqtxoLh
         0AroGLoY1H1LdBuWBTH485KNM4iGM1bimwNIkzgsmCVdgwdv6TzUnJTZl9wLObUGgfCA
         7LjGNzEieKHBSp+JnDXE2KdJ/ugLZxG3pgTnVX4CkUvgOj2MHMb338Kvn03qg8jF487J
         nmL9wsthCaSYtxqCVQmrvBehzHqHWc8GAb2N2DnXrhvwc5vFcaiRB6uOcHAiRi/WOK9v
         lMqA==
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: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=YUyAx6swaz+7Wga2ZnzCJzEA4Pntuekrv0FcDCvUioY=;
        b=PX4ctZ0rKJnJOKlrh2saHSyuk33xpWe17vr2DP6PcegYFyrFQkKFrllToK8l9Qj+Qj
         JWlAeeXzkOnwD4FO9DlDtQnVq5X6duuztWflUc75tz0VMv0NAnrahIha2dX2aTambO4u
         6Bzfa8N8xfShtY6CJ0+Vm38GM8QceKx3VESLpyCwf2GyiYFvowXy0yI2OyV65OhWHOM3
         GF7O88YlUsTgPnV/AZ+H3MqiVwvq/Iv1qjm1bv1fNteiZLj0KN4R9BmRAs4CTfZyCRYC
         aN0gKVX0vLEAMQ6GW7FYewkM6Zyw4iYA+rxca7jUhGiXGSmWLofg0BfSJFBfu0rVeFUj
         k58Q==
X-Gm-Message-State: AHYfb5iEn8FEOd8MIkTPk5G0ecuPCnA7u4L6QQ1QWqfLTO2vcZqX9/gE
	edrCJnKMwQKe5g0t
X-Received: by 10.159.36.133 with SMTP id 5mr1020685uar.42.1503948031323;
        Mon, 28 Aug 2017 12:20:31 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.36.65.217 with SMTP id b86ls915178itd.18.canary-gmail; Mon, 28
 Aug 2017 12:20:30 -0700 (PDT)
X-Received: by 10.31.3.106 with SMTP id 103mr19010vkd.11.1503948030040;
        Mon, 28 Aug 2017 12:20:30 -0700 (PDT)
In-Reply-To: <27932a56-329e-4854-8d6f-e8a4812adadb@isocpp.org>
X-Original-Sender: rmn100@gmail.com
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <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:34185
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/34185>

------=_Part_7146_1600220776.1503948029651
Content-Type: multipart/alternative; 
	boundary="----=_Part_7147_688418426.1503948029651"

------=_Part_7147_688418426.1503948029651
Content-Type: text/plain; charset="UTF-8"

I think I wasn't clear.  It is prone to ODR violations not neccesarily the 
same way as is_decomposable would be but like the following

class Something {
public:
    using iterator_category = int;
    using difference_type = int;
    using pointer = int*;
    using value_type = int;
    using reference = int&;
};


void foo(Something) {
    auto iter_traits = std::iterator_traits<Something>{};
    static_cast<void>(iter_traits);
}

And then in another cpp file, which has the definition of Something visible

namespace std {
template <>
class iterator_traits<Something> {
public:
    using iterator_category = int;
    using difference_type = std::size_t;
    using pointer = int*;
    using value_type = int;
    using reference = int&;
};
} // namespace std


void bar(Something) {
    auto iter_traits = std::iterator_traits<Something>{};
    static_cast<void>(iter_traits);
}

Would it be best to just exclude is_decomposable from the proposal?  Is 
there any other way to achieve the ability it provides to the 
instantiations of the lambda?

On Monday, 28 August 2017 11:19:29 UTC-7, T. C. wrote:
>
>
> On Monday, August 28, 2017 at 2:14:03 PM UTC-4, Curious wrote:
>>
>> @T. C, The is_decomposable trait has the same potential ODR issues as 
>> std::iterator_traits.
>>
>
> It doesn't. Instantiating iterator_traits<T> will always give you the same 
> definition if T is complete. And instantiating standard library templates 
> with incomplete types is generally prohibited. 
>
> is_decomposable, OTOH, does not have the luxury of ignoring incomplete 
> tuple_size<X>s.
>
>
>

-- 
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/e148a17c-acc0-44a3-854b-531b13c0520d%40isocpp.org.

------=_Part_7147_688418426.1503948029651
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I think I wasn&#39;t clear. =C2=A0It is prone to ODR viola=
tions not neccesarily the same way as is_decomposable would be but like the=
 following<div><br></div><div><div class=3D"prettyprint" style=3D"backgroun=
d-color: rgb(250, 250, 250); border: 1px solid rgb(187, 187, 187); word-wra=
p: break-word;"><code class=3D"prettyprint"><div class=3D"subprettyprint"><=
span style=3D"color: #008;" class=3D"styled-by-prettify">class</span><span =
style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"=
color: #606;" class=3D"styled-by-prettify">Something</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">{</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br></span><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">public</span><span style=3D"color: #660;" class=3D"styled=
-by-prettify">:</span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify"><br>=C2=A0 =C2=A0 </span><span style=3D"color: #008;" class=3D"styled-=
by-prettify">using</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> iterator_category </span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify"=
>int</span><span style=3D"color: #660;" class=3D"styled-by-prettify">;</spa=
n><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=
=A0 </span><span style=3D"color: #008;" class=3D"styled-by-prettify">using<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify"> difference=
_type </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an style=3D"color: #008;" class=3D"styled-by-prettify">int</span><span styl=
e=3D"color: #660;" class=3D"styled-by-prettify">;</span><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 </span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">using</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"> pointer </span><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: #0=
00;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" clas=
s=3D"styled-by-prettify">int</span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">*;</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"><br>=C2=A0 =C2=A0 </span><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">using</span><span style=3D"color: #000;" class=3D"styled-=
by-prettify"> value_type </span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">i=
nt</span><span style=3D"color: #660;" class=3D"styled-by-prettify">;</span>=
<span style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0=
 </span><span style=3D"color: #008;" class=3D"styled-by-prettify">using</sp=
an><span style=3D"color: #000;" class=3D"styled-by-prettify"> reference </s=
pan><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">int</span><span style=3D"col=
or: #660;" class=3D"styled-by-prettify">&amp;;</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #660;"=
 class=3D"styled-by-prettify">};</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br><br><br></span><span style=3D"color: #008;" cla=
ss=3D"styled-by-prettify">void</span><span style=3D"color: #000;" class=3D"=
styled-by-prettify"> foo</span><span style=3D"color: #660;" class=3D"styled=
-by-prettify">(</span><span style=3D"color: #606;" class=3D"styled-by-prett=
ify">Something</span><span style=3D"color: #660;" class=3D"styled-by-pretti=
fy">)</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </sp=
an><span style=3D"color: #660;" class=3D"styled-by-prettify">{</span><span =
style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 </spa=
n><span style=3D"color: #008;" class=3D"styled-by-prettify">auto</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"> iter_traits </span><=
span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"> std</span><span style=3D=
"color: #660;" class=3D"styled-by-prettify">::</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify">iterator_traits</span><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #=
606;" class=3D"styled-by-prettify">Something</span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">&gt;{};</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 </span><span style=3D"colo=
r: #008;" class=3D"styled-by-prettify">static_cast</span><span style=3D"col=
or: #080;" class=3D"styled-by-prettify">&lt;void&gt;</span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">(</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify">iter_traits</span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">);</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"><br></span><span style=3D"color: #660;" class=3D"=
styled-by-prettify">}</span></div></code></div><br>And then in another cpp =
file, which has the definition of <font face=3D"courier new, monospace">Som=
ething</font> visible<br><br><div class=3D"prettyprint" style=3D"background=
-color: rgb(250, 250, 250); border: 1px solid rgb(187, 187, 187); word-wrap=
: break-word;"><code class=3D"prettyprint"><div class=3D"subprettyprint"><s=
pan style=3D"color: #008;" class=3D"styled-by-prettify">namespace</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"> std </span><span st=
yle=3D"color: #660;" class=3D"styled-by-prettify">{</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #=
008;" class=3D"styled-by-prettify">template</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">&lt;&gt;</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br></span><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">class</span><span style=3D"color: #000;" class=3D"styled-=
by-prettify"> iterator_traits</span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">&lt;</span><span style=3D"color: #606;" class=3D"styled-=
by-prettify">Something</span><span style=3D"color: #660;" class=3D"styled-b=
y-prettify">&gt;</span><span style=3D"color: #000;" class=3D"styled-by-pret=
tify"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify">{</=
span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></span><=
span style=3D"color: #008;" class=3D"styled-by-prettify">public</span><span=
 style=3D"color: #660;" class=3D"styled-by-prettify">:</span><span style=3D=
"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 </span><span =
style=3D"color: #008;" class=3D"styled-by-prettify">using</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> iterator_category </span><s=
pan style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"col=
or: #008;" class=3D"styled-by-prettify">int</span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">;</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 </span><span style=3D"color: #008=
;" class=3D"styled-by-prettify">using</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> difference_type </span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> std</span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">::</span><span style=3D"color: #000;" class=3D"styled-=
by-prettify">size_t</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">;</span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
<br>=C2=A0 =C2=A0 </span><span style=3D"color: #008;" class=3D"styled-by-pr=
ettify">using</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"> pointer </span><span style=3D"color: #660;" class=3D"styled-by-prettify=
">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </sp=
an><span style=3D"color: #008;" class=3D"styled-by-prettify">int</span><spa=
n style=3D"color: #660;" class=3D"styled-by-prettify">*;</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 </span><sp=
an style=3D"color: #008;" class=3D"styled-by-prettify">using</span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"> value_type </span><span =
style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #008;" class=3D"styled-by-prettify">int</span><span style=3D"color: #660;=
" class=3D"styled-by-prettify">;</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 </span><span style=3D"color: #008=
;" class=3D"styled-by-prettify">using</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> reference </span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D=
"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-b=
y-prettify">int</span><span style=3D"color: #660;" class=3D"styled-by-prett=
ify">&amp;;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
><br></span><span style=3D"color: #660;" class=3D"styled-by-prettify">};</s=
pan><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></span><s=
pan style=3D"color: #660;" class=3D"styled-by-prettify">}</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #800;" class=3D"styled-by-prettify">// namespace std</span><span style=3D=
"color: #000;" class=3D"styled-by-prettify"><br><br><br></span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">void</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"> bar</span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">(</span><span style=3D"color: #606;" cla=
ss=3D"styled-by-prettify">Something</span><span style=3D"color: #660;" clas=
s=3D"styled-by-prettify">)</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-pre=
ttify">{</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><b=
r>=C2=A0 =C2=A0 </span><span style=3D"color: #008;" class=3D"styled-by-pret=
tify">auto</span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
 iter_traits </span><span style=3D"color: #660;" class=3D"styled-by-prettif=
y">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> std=
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">::</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify">iterator_traits</s=
pan><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span><s=
pan style=3D"color: #606;" class=3D"styled-by-prettify">Something</span><sp=
an style=3D"color: #660;" class=3D"styled-by-prettify">&gt;{};</span><span =
style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 </spa=
n><span style=3D"color: #008;" class=3D"styled-by-prettify">static_cast</sp=
an><span style=3D"color: #080;" class=3D"styled-by-prettify">&lt;void&gt;</=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">(</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify">iter_traits</span><sp=
an style=3D"color: #660;" class=3D"styled-by-prettify">);</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">}</span></div></code></div><br>Wou=
ld it be best to just exclude <font face=3D"courier new, monospace">is_deco=
mposable</font> from the proposal? =C2=A0Is there any other way to achieve =
the ability it provides to the instantiations of the lambda?<br><br>On Mond=
ay, 28 August 2017 11:19:29 UTC-7, T. C.  wrote:<blockquote class=3D"gmail_=
quote" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;pa=
dding-left: 1ex;"><div dir=3D"ltr"><br>On Monday, August 28, 2017 at 2:14:0=
3 PM UTC-4, Curious 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">@T. C, The <font face=3D"courier new, monospace">is_decomposable</=
font> trait has the same potential ODR issues as <font face=3D"courier new,=
 monospace">std::iterator_traits</font><font face=3D"arial, sans-serif">.</=
font></div></blockquote><div><br></div><div>It doesn&#39;t. Instantiating i=
terator_traits&lt;T&gt; will always give you the same definition if T is co=
mplete. And instantiating standard library templates with incomplete types =
is generally prohibited.=C2=A0</div><div><br></div><div>is_decomposable, OT=
OH, does not have the luxury of ignoring incomplete tuple_size&lt;X&gt;s.</=
div><div><br></div><div><br></div></div></blockquote></div></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/e148a17c-acc0-44a3-854b-531b13c0520d%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/e148a17c-acc0-44a3-854b-531b13c0520d=
%40isocpp.org</a>.<br />

------=_Part_7147_688418426.1503948029651--

------=_Part_7146_1600220776.1503948029651--

.
