220 29390 <f2877a3a-dd59-4a52-ab25-6458b9de3128@isocpp.org> article
Path: news.gmane.org!.POSTED!not-for-mail
From: Nicol Bolas <jmckesson@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: why not formally support meta programming.
Date: Wed, 9 Nov 2016 16:45:16 -0800 (PST)
Lines: 235
Approved: news@gmane.org
Message-ID: <f2877a3a-dd59-4a52-ab25-6458b9de3128@isocpp.org>
References: <668e0a04-c988-4354-ae32-30f626f75403@isocpp.org> <CAOqAUTiRxwtmzM-_tSyTUKbyiJhivCbVmUgQ749ByD=h-SAF4A@mail.gmail.com>
 <CAKO7S=JZi-v=EZiXFmUZnkMxARbVK5EJ6wmnC3NkqT_oSEQjOQ@mail.gmail.com>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_135_419760284.1478738717035"
X-Trace: blaine.gmane.org 1478738740 8742 195.159.176.226 (10 Nov 2016 00:45:40 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Thu, 10 Nov 2016 00:45:40 +0000 (UTC)
Cc: billconan@gmail.com
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBCEKFTV6ZUMBBHMGR7AQKGQEZL4EX6Y@isocpp.org Thu Nov 10 01:45:36 2016
Return-path: <std-proposals+bncBCEKFTV6ZUMBBHMGR7AQKGQEZL4EX6Y@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+bncBCEKFTV6ZUMBBHMGR7AQKGQEZL4EX6Y@isocpp.org>)
	id 1c4dUR-0007Hc-Rl
	for gclcip-std-proposals@m.gmane.org; Thu, 10 Nov 2016 01:45:16 +0100
Original-Received: by mail-ua0-f199.google.com with SMTP id d33sf183656231uad.2
        for <gclcip-std-proposals@m.gmane.org>; Wed, 09 Nov 2016 16:45:19 -0800 (PST)
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:x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=hEoPqXd26qzLxqkVTwYlMKQrrnjLDP97S8iAWQHVQ5o=;
        b=GkO0umNUIuC++PDkVm9lAKZs6XSb/JYGE+pt4fS55XphyDDzSDOBBafdwGhbyci3vM
         Mo0WNgU4VCI1CGm5TXDAelnbCgjcSScwU2cfykfe7d0eLPbjZtFcQVOqMdBb4yZYd8yQ
         BZA3mqesjLinxGaq9WEtvz3klyQl006WU+HumoPV1IXg4ogd+5nJcIu4bT75I6Hu5o95
         AVofpyN7+ygdX1zF1B9JFnzNozD2DyZseEQMvF7gXZH+xCSQHGywe4jCNR5+jp3lOb36
         5vmAoHd7cObla1SOXUNef1LKCW4T1rS7IoWNrr7XrQppmgKudJYMXSfa8rl1dsudE58b
         qazA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=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=hEoPqXd26qzLxqkVTwYlMKQrrnjLDP97S8iAWQHVQ5o=;
        b=ks73RRP5vKjjcnOu7vjXkBKv2Qcr/+rwoL/I1Sfi7kgSG5lO8CVQzHEqw2oEgTKqeA
         NpRR2QDmms6iOr1T0un7SylbjHu0u3Du55IAfjtA3fynGB3Jtpq68CsCDNbKWH8vKex6
         mXK3qd6l3/oKQmhK4xbcaLYJxMwjW7/YpwCZlmbKsfTJTxWZbE8tFiaUY12v2GTgWIfL
         IwGn3tRbz51AwTs4Ix7dL8Una3ROYS1+0vSnzBA0qRkn+/7rejlLcveC+gGQC+0Lldrz
         Tx5wmMZMVYUT+nF+oEid9YH2lHsATGZlhdTB5z4mFnoO+gStxRHWNPQCRjQNGDLLffHH
         OMAQ==
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: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=hEoPqXd26qzLxqkVTwYlMKQrrnjLDP97S8iAWQHVQ5o=;
        b=JGjbOPqAD2HSeNrQvEJ0W0j9Svc0oaT1DTkckUTBBfQhEe/xMDylU5s2vcbhp459WF
         g3nw6GAP1lUvY9MfbsPiFdLbNhnelTW8ST5AxZYQuTHQqyC5bxAIcPtNgfd6sgPSslRy
         B7mrhCFTnBo3hP/ouK2mIRo1oYwUOdBzTeD68iXH6+iorPWJa+gnpSZ+7y3hBqLYX2sY
         qNlMmosN0c7AVtkTk9vmny98lRs0PIkRfsTYP0aRxLq1c42pVad5QTTY+U3M+JlHVMM9
         CVVaSgEtnrJpTmW6HQ9wICfZBi2/TFUvkfx7bv5vCO4geBeWbvJXziM4w1HXOzlCK1EZ
         hZIQ==
X-Gm-Message-State: ABUngvekTbpEJl6VeBzo2SCbP7TzvD5mGMi1Dn+jlVPPoZsjcj8A6aLUYcwMWGEQvCsWvQ==
X-Received: by 10.176.84.72 with SMTP id o8mr19915uaa.8.1478738718671;
        Wed, 09 Nov 2016 16:45:18 -0800 (PST)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.157.14.179 with SMTP id 48ls7206592otj.31.gmail; Wed, 09 Nov
 2016 16:45:17 -0800 (PST)
X-Received: by 10.157.3.235 with SMTP id f98mr408894otf.14.1478738717709;
        Wed, 09 Nov 2016 16:45:17 -0800 (PST)
In-Reply-To: <CAKO7S=JZi-v=EZiXFmUZnkMxARbVK5EJ6wmnC3NkqT_oSEQjOQ@mail.gmail.com>
X-Original-Sender: jmckesson@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:29390
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/29390>

------=_Part_135_419760284.1478738717035
Content-Type: multipart/alternative; 
	boundary="----=_Part_136_1451348335.1478738717035"

------=_Part_136_1451348335.1478738717035
Content-Type: text/plain; charset=UTF-8

A combination of `if constexpr` and template specialization can handle what 
you're doing:

struct CPU_Device {};
struct GPU_Device {}

template<typename Device, typename DataType>
class BlahData;

template<typename DataType>
class BlahData<CPU_Device, DataType>
{
  DataType member_only_used_by_cpu;
  void function_on_cpu();
};

template<typename DataType>
class BlahData<GPU_Device, DataType>
{
  DataType member_only_used_by_gpu;
  void function_on_gpu();
};

template<typename Device, typename DataType>
class Blah : public BlahData<Device, DataType>
{
  DataType shared_member;

  void shared_function()
  { 
    ...
    if constexpr(std::is_same<Device, GPU_Device>)
    {
    }
  }
};

If you want to have `BlahData` functions be able to access the shared 
members of `Blah`, then you'll need to have `BlahData` use the CRTP trick 
to do so.

On Wednesday, November 9, 2016 at 3:11:58 PM UTC-5, Shi Yan wrote:
>
> So what's the reason for rejection? 
>

That it was really, really difficult to specify.

-- 
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/f2877a3a-dd59-4a52-ab25-6458b9de3128%40isocpp.org.

------=_Part_136_1451348335.1478738717035
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">A combination of `if constexpr` and template specializatio=
n can handle what you&#39;re doing:<br><br><div style=3D"background-color: =
rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style: solid; =
border-width: 1px; overflow-wrap: break-word;" class=3D"prettyprint"><code =
class=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"color: #=
008;" class=3D"styled-by-prettify">struct</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"> CPU_Device </span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">{};</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"><br></span><span style=3D"color: #008;" class=3D"=
styled-by-prettify">struct</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"> GPU_Device </span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">{}</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"><br><br></span><span style=3D"color: #008;" class=3D"styled-by-pr=
ettify">template</span><span style=3D"color: #660;" class=3D"styled-by-pret=
tify">&lt;</span><span style=3D"color: #008;" class=3D"styled-by-prettify">=
typename</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> <=
/span><span style=3D"color: #606;" class=3D"styled-by-prettify">Device</spa=
n><span style=3D"color: #660;" class=3D"styled-by-prettify">,</span><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"c=
olor: #008;" class=3D"styled-by-prettify">typename</span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;=
" class=3D"styled-by-prettify">DataType</span><span style=3D"color: #660;" =
class=3D"styled-by-prettify">&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"> </span><span style=3D"color: #606;" class=3D"styled-by-pretti=
fy">BlahData</span><span style=3D"color: #660;" class=3D"styled-by-prettify=
">;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br><br=
></span><span style=3D"color: #008;" class=3D"styled-by-prettify">template<=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span>=
<span style=3D"color: #008;" class=3D"styled-by-prettify">typename</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #606;" class=3D"styled-by-prettify">DataType</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">&gt;</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"><br></span><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">BlahData</span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">&lt;</span><span style=3D"color: #000;" class=3D"styled-=
by-prettify">CPU_Device</span><span style=3D"color: #660;" class=3D"styled-=
by-prettify">,</span><span style=3D"color: #000;" class=3D"styled-by-pretti=
fy"> </span><span style=3D"color: #606;" class=3D"styled-by-prettify">DataT=
ype</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;</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"><br>=C2=A0 </span><span styl=
e=3D"color: #606;" class=3D"styled-by-prettify">DataType</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> member_only_used_by_cpu</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 </span><span=
 style=3D"color: #008;" class=3D"styled-by-prettify">void</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> function_on_cpu</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"co=
lor: #660;" class=3D"styled-by-prettify">};</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"><br><br></span><span style=3D"color: #008;=
" class=3D"styled-by-prettify">template</span><span style=3D"color: #660;" =
class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #008;" class=
=3D"styled-by-prettify">typename</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=3D"style=
d-by-prettify">DataType</span><span style=3D"color: #660;" class=3D"styled-=
by-prettify">&gt;</span><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify"><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify"=
>class</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </s=
pan><span style=3D"color: #606;" class=3D"styled-by-prettify">BlahData</spa=
n><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify">GPU_Device</span><spa=
n 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=
: #606;" class=3D"styled-by-prettify">DataType</span><span style=3D"color: =
#660;" class=3D"styled-by-prettify">&gt;</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"style=
d-by-prettify"><br>=C2=A0 </span><span style=3D"color: #606;" class=3D"styl=
ed-by-prettify">DataType</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> member_only_used_by_gpu</span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">;</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"><br>=C2=A0 </span><span style=3D"color: #008;" class=3D"=
styled-by-prettify">void</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> function_on_gpu</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: #660;" class=3D"styled-by-pre=
ttify">};</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><=
br><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify">tem=
plate</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;<=
/span><span style=3D"color: #008;" class=3D"styled-by-prettify">typename</s=
pan><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span=
 style=3D"color: #606;" class=3D"styled-by-prettify">Device</span><span sty=
le=3D"color: #660;" class=3D"styled-by-prettify">,</span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;=
" class=3D"styled-by-prettify">typename</span><span style=3D"color: #000;" =
class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=3D"=
styled-by-prettify">DataType</span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">&gt;</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"><br></span><span style=3D"color: #008;" class=3D"styled-by-pret=
tify">class</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
> </span><span style=3D"color: #606;" class=3D"styled-by-prettify">Blah</sp=
an><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span =
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: #0=
08;" class=3D"styled-by-prettify">public</span><span style=3D"color: #000;"=
 class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=3D=
"styled-by-prettify">BlahData</span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">&lt;</span><span style=3D"color: #606;" class=3D"styled-=
by-prettify">Device</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">,</span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
 </span><span style=3D"color: #606;" class=3D"styled-by-prettify">DataType<=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;</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>=C2=A0 </span><span style=3D=
"color: #606;" class=3D"styled-by-prettify">DataType</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"> shared_member</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">;</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"><br><br>=C2=A0 </span><span style=3D"=
color: #008;" class=3D"styled-by-prettify">void</span><span style=3D"color:=
 #000;" class=3D"styled-by-prettify"> shared_function</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 </span><span style=3D"color: =
#660;" class=3D"styled-by-prettify">{</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> <br>=C2=A0 =C2=A0 </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">if</span><span style=3D"color: #000;" =
class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"=
styled-by-prettify">constexpr</span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">(</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify">std</span><span style=3D"color: #660;" class=3D"styled-by-prettif=
y">::</span><span style=3D"color: #000;" class=3D"styled-by-prettify">is_sa=
me</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</sp=
an><span style=3D"color: #606;" class=3D"styled-by-prettify">Device</span><=
span style=3D"color: #660;" class=3D"styled-by-prettify">,</span><span styl=
e=3D"color: #000;" class=3D"styled-by-prettify"> GPU_Device</span><span sty=
le=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 </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 s=
tyle=3D"color: #660;" class=3D"styled-by-prettify">}</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"><br>=C2=A0 </span><span style=3D"=
color: #660;" class=3D"styled-by-prettify">}</span><span style=3D"color: #0=
00;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">};</span></div></code></div><br>If you want to =
have `BlahData` functions be able to access the shared members of `Blah`, t=
hen you&#39;ll need to have `BlahData` use the CRTP trick to do so.<br><br>=
On Wednesday, November 9, 2016 at 3:11:58 PM UTC-5, Shi Yan wrote:<blockquo=
te class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left:=
 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr">So what&#39;s the reas=
on for rejection?=C2=A0</div></blockquote><div><br>That it was really, real=
ly difficult to specify.<br></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/f2877a3a-dd59-4a52-ab25-6458b9de3128%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/f2877a3a-dd59-4a52-ab25-6458b9de3128=
%40isocpp.org</a>.<br />

------=_Part_136_1451348335.1478738717035--

------=_Part_135_419760284.1478738717035--

.
