220 24888 <fccab40e-bfe8-49e0-ad12-2a2ac28b28a6@isocpp.org> article
Path: news.gmane.org!not-for-mail
From: "'Walt Karas' via ISO C++ Standard - Future Proposals" <std-proposals@isocpp.org>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: "Components" template with implicitly defined
 partial specializations for all classes
Date: Wed, 2 Mar 2016 16:50:51 -0800 (PST)
Lines: 80
Approved: news@gmane.org
Message-ID: <fccab40e-bfe8-49e0-ad12-2a2ac28b28a6@isocpp.org>
References: <fd64d8c9-703d-45d8-a9b2-4b8a222c02f0@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: plane.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_138_1660235006.1456966251605"
X-Trace: ger.gmane.org 1456966263 12806 80.91.229.3 (3 Mar 2016 00:51:03 GMT)
X-Complaints-To: usenet@ger.gmane.org
NNTP-Posting-Date: Thu, 3 Mar 2016 00:51:03 +0000 (UTC)
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBDFLZXWOVYIBB3EU323AKGQEJMGFHTQ@isocpp.org Thu Mar 03 01:50:56 2016
Return-path: <std-proposals+bncBDFLZXWOVYIBB3EU323AKGQEJMGFHTQ@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-ob0-f198.google.com ([209.85.214.198])
	by plane.gmane.org with esmtp (Exim 4.69)
	(envelope-from <std-proposals+bncBDFLZXWOVYIBB3EU323AKGQEJMGFHTQ@isocpp.org>)
	id 1abHTi-0006GZ-GQ
	for gclcip-std-proposals@m.gmane.org; Thu, 03 Mar 2016 01:50:54 +0100
Original-Received: by mail-ob0-f198.google.com with SMTP id rt7sf6824417obb.0
        for <gclcip-std-proposals@m.gmane.org>; Wed, 02 Mar 2016 16:50:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=date:from:to:message-id: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=7lFnISRg4pHTlnooI60ZZ1XK0bCKzn1XMt7MOOUV/wM=;
        b=Ww9UgduAgcxxBTwLeSxsrurJDKpEQKprmRsjFt3kERbus0+vqixOBmPHc65fAikwK4
         wfvPjHBuwpudsUvK7bPCKzDmC6prdp3jb+rHsQoY+o8HPt2jdm+knsbtdcCgLj0RnPRv
         jdd/pklRe6P4ayqUhT3aK22VXWuiVRYZB5BeCNYYHnRXrWppQxpDmuVNp+7ixPnhqciB
         7rlWNP1F0awayJYBInHvtexiX1OKcOZi3MgWtTeWI4xhzvxjBH3XxYxUI4yF2xfitxjW
         easbFZdGzTL0ptYrBdWie6aYG1CbppHgwgWltw6uU2CV2pp4kn2Jy8skdIL59IUTNpl9
         3c+Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20130820;
        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=7lFnISRg4pHTlnooI60ZZ1XK0bCKzn1XMt7MOOUV/wM=;
        b=IDDuNGlMXRMqZTJERZTj+oQnYkP0Q+AcdzqbYGpbKlu0zCmNo+BF5TDG0ERknzwusw
         nLZ7xMgjCR18ge7SLOFVlyFbwy7Fc05sN6rD8era1LuNehMqExQxi8KijKJMjeCdLYwl
         wtOHgNALKGvXjkGpMT1Ikgs07ns6z4z+ba64IPV2uetz+CHw1dDyMhyLQEwzb7hpxH2A
         erqskHVqWPPruV1oFnx0FhJkVt/ZuQ6qM2CXOcXyguAAOXfAL4vn6+0sn4bNV4Dxsw1h
         JZIAnt1MLqPXLdgiCEnhZkTY6/8PHRfaSMSYykVf+wK8IMMJGNDCF2NzXczo/Qr8Riv8
         zPCg==
X-Gm-Message-State: AD7BkJJGvoGRtrYGMUPa+RC0ohE3Is0P+rcgN7MuI4B9qv2nevaP0/LZxTDdR0NQXfcIIQ==
X-Received: by 10.107.6.163 with SMTP id f35mr207872ioi.25.1456966253462;
        Wed, 02 Mar 2016 16:50:53 -0800 (PST)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.107.162.211 with SMTP id l202ls1144266ioe.73.gmail; Wed, 02
 Mar 2016 16:50:52 -0800 (PST)
X-Received: by 10.50.110.41 with SMTP id hx9mr5730igb.2.1456966252550;
        Wed, 02 Mar 2016 16:50:52 -0800 (PST)
In-Reply-To: <fd64d8c9-703d-45d8-a9b2-4b8a222c02f0@isocpp.org>
X-Original-Sender: wkaras@yahoo.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>
X-Original-From: Walt Karas <wkaras@yahoo.com>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:24888
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/24888>

------=_Part_138_1660235006.1456966251605
Content-Type: multipart/alternative; 
	boundary="----=_Part_139_1230542507.1456966251605"

------=_Part_139_1230542507.1456966251605
Content-Type: text/plain; charset=UTF-8

On second thought, Components should be an implicitly defined (public) 
member class template of every class.  This makes more sense, since it 
needs member access to the class.

template <
  template <typename Member_type, Member_type A::*mptr> class Op,
  typename Param>
struct Components
  {
    bool operator () (Param &param)
      {
      ...
      }
  };

Default operator == changes to:

template <class Target>
bool operator == (const Target &op1, const Target &op2)
  {
    Equality_param<Target> param(op1, op2);

    typename Target::template
      Components<Equality_op<Target>::template Op, Equality_param<Target> > 
c;

    return(c(param));
  }

-- 
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/fccab40e-bfe8-49e0-ad12-2a2ac28b28a6%40isocpp.org.

------=_Part_139_1230542507.1456966251605
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">On second thought, Components should be an implicitly defi=
ned (public) member class template of every class.=C2=A0 This makes more se=
nse, since it needs member access to the class.<br><br>template &lt;<br>=C2=
=A0 template &lt;typename Member_type, Member_type A::*mptr&gt; class Op,<b=
r>=C2=A0 typename Param&gt;<br>struct Components<br>=C2=A0 {<br>=C2=A0=C2=
=A0=C2=A0 bool operator () (Param &amp;param)<br>=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 {<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...<br>=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 }<br>=C2=A0 };<br><br>Default operator =3D=3D changes to:<br><br>tem=
plate &lt;class Target&gt;<br>bool operator =3D=3D (const Target &amp;op1, =
const Target &amp;op2)<br>=C2=A0 {<br>=C2=A0=C2=A0=C2=A0 Equality_param&lt;=
Target&gt; param(op1, op2);<br><br>=C2=A0=C2=A0=C2=A0 typename Target::temp=
late<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Components&lt;Equality_op&lt;Target&=
gt;::template Op, Equality_param&lt;Target&gt; &gt; c;<br><br>=C2=A0=C2=A0=
=C2=A0 return(c(param));<br>=C2=A0 }<br></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/fccab40e-bfe8-49e0-ad12-2a2ac28b28a6%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/fccab40e-bfe8-49e0-ad12-2a2ac28b28a6=
%40isocpp.org</a>.<br />

------=_Part_139_1230542507.1456966251605--
------=_Part_138_1660235006.1456966251605--

.
