220 41267 <CALvx3hbM2dPOgHh=2NvjhoC2kuv9doA9xWdVKJ2cT_upipRKfw@mail.gmail.com> article
Path: news.gmane.org!.POSTED!not-for-mail
From: Richard Hodges <hodges.r@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Re: constexpr also in switch() and even in for().
Date: Fri, 14 Dec 2018 17:32:22 +0700
Lines: 214
Approved: news@gmane.org
Message-ID: <CALvx3hbM2dPOgHh=2NvjhoC2kuv9doA9xWdVKJ2cT_upipRKfw@mail.gmail.com>
References: <18750262-f0ab-4330-ab08-29004735c6bb@isocpp.org> <4fe7ab83-be8f-4f62-a1a4-72b39fb540d3@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="000000000000fc6c9e057cf8f215"
X-Trace: blaine.gmane.org 1544783432 1969 195.159.176.226 (14 Dec 2018 10:30:32 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Fri, 14 Dec 2018 10:30:32 +0000 (UTC)
To: std-proposals@isocpp.org
Original-X-From: std-proposals+bncBD4PBM7UWAHRBQUNZ3QAKGQEL7G32YI@isocpp.org Fri Dec 14 11:30:27 2018
Return-path: <std-proposals+bncBD4PBM7UWAHRBQUNZ3QAKGQEL7G32YI@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-io1-f69.google.com ([209.85.166.69])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBD4PBM7UWAHRBQUNZ3QAKGQEL7G32YI@isocpp.org>)
	id 1gXkji-0000QK-Sl
	for gclcip-std-proposals@m.gmane.org; Fri, 14 Dec 2018 11:30:27 +0100
Original-Received: by mail-io1-f69.google.com with SMTP id y25sf4399592ioc.9
        for <gclcip-std-proposals@m.gmane.org>; Fri, 14 Dec 2018 02:32:38 -0800 (PST)
ARC-Seal: i=2; a=rsa-sha256; t=1544783557; cv=pass;
        d=google.com; s=arc-20160816;
        b=FETK+pJus6fY4xDWA6eL78+18hzh2GoevrXQ7jD6GWXnbqtIsp0EUIUyD/SZn2vC5E
         u5nHk/tViVV9Ij3sstoRy4m37tQHkynYge7iNpKA/YIOshXVJKa2TUpTA4BHP91Yv5z5
         2pZ+El6Dm4zQnKiytS9j6yaaWOFNME+k2HzqcOL+ctF0S5TioroilEhwywFrgFEK7Pjt
         MuQj8Gmk8yTQLEiyzkjZv1zLvFaoOKKKBl/znPWY3cNFmkmKXNthYrh/ngppuH5iZjj5
         6rALB7NyFihozO5zxq03IWgxC2/o8KVQzTVoH1iJOmSFF/N7IXljMukP/OhN8K+PEVaL
         yiww==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
         :list-id:mailing-list:precedence:reply-to:to:subject:message-id:date
         :from:in-reply-to:references:mime-version:dkim-signature;
        bh=Hp2yNBkwkx09wcL5VATNEBUINZOW2uSus/9oqX6pRik=;
        b=RplQNLA0cyNYVP4/IIxJXnW1rKEtoAXcgtqJAaE4mMsb5NXorH+f5Ke5o98hxHxqZV
         oUrSqpJEjoKtgNUi1UH2nBcyeUx36EAV1Id74V0t7gsa3zd19VexhexqgZE+ieJ97VHQ
         +uePJDtdcLxVKlQrdkBNwBiQju/AgxGXNSVJz4t/nerp5SZwWn/zuPESS8pIH30/QdHz
         DOwxreFyF1T+DC3peyrap9lVCUnJtdruSfOGqM7LdjNbin83Kgo8+lZzboN0TyUB5wyy
         rMGU5lKzIN8+B+AGJT277V5bBkaSOlynjswo2kb2drz78D2MkYOx6jnhIPNSx1QTFn1s
         zEfw==
ARC-Authentication-Results: i=2; mx.google.com;
       dkim=pass header.i=@gmail.com header.s=20161025 header.b=XkCoTg3p;
       spf=pass (google.com: domain of hodges.r@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=hodges.r@gmail.com;
       dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=mime-version:references:in-reply-to:from:date:message-id:subject:to
         :x-original-sender:x-original-authentication-results:reply-to
         :precedence:mailing-list:list-id:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=Hp2yNBkwkx09wcL5VATNEBUINZOW2uSus/9oqX6pRik=;
        b=Lb1t7/wgN1r5joEf1SKYtBKwXXGpbzF9362CnwuZeAmAte2VGm/c8g8LSYVjuhywaj
         VLwxKzAgy1QpCI00v+Smk78xIpH3ZP9PJPq9PaPnsZBsb3aZjfYzp6Dvj3WGFHASI2J5
         a5Lg/dYyml2Ml6xNXuDl81B0mJri6hSo3jhOQrqMU34UwO65OI+pzI38XlQYPZdGk0gJ
         T+PWzmJfIYoSnN4YuPLAlaXSBrX/3tqR/89F0e1L5b9wOu9WvwL/8U8O6uA1JTTGFCf8
         ZDiR/APvALbzRAB1oEFvb0FL6HK2wEFdrYcomTBXMw6RaVnovubESjuusuwE7eMAb5MC
         nbcw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:mime-version:references:in-reply-to:from:date
         :message-id:subject:to:x-original-sender
         :x-original-authentication-results:reply-to:precedence:mailing-list
         :list-id:x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=Hp2yNBkwkx09wcL5VATNEBUINZOW2uSus/9oqX6pRik=;
        b=YZrEbeA7fWZqPGbKpSxGGCOQJXsETX4XZO9m7oNVvvouXp3/huwNbD42hc21V8n5Tr
         bviVh5qYjvMx4nTq5xj+h2XYLJO7AxspK7CMRuHZDJf14HyvBKswmBwcyqHDn2faCd+v
         +7DCQfwWGKWYvE9IkKsIAvF1vx7DFTEdWOT3ZDzoc8zy/OtmKeJ/lf3y9I81HD0g+e8Q
         cRceKpJaAD8C3vbSmZ9n88TkjZu7R5vs1WqLyERRNYgqbUzBNel/nuZyV4RjjCOYbhG5
         Q9PsyVuhnQoQopz+I65u0cGX0vKvSdO5Pvs8Pht5zIQZ4DgaY5kYV1YBMnd1hkkutzpN
         Au5g==
X-Gm-Message-State: AA+aEWYrxZ+KM5fpdgiH+b9ml41HZsCzba439PV5ku/PbVuooCRXOJaD
	PsIQm0JjujS3oXjS1AdmyT5Tyw==
X-Google-Smtp-Source: AFSGD/UqAaPRv56fCxiC6qPr970X7pSxNvXp/ufkV8iCbvhsYuLHwc5oM26fFxjLo9dnjK5R/zU58Q==
X-Received: by 2002:a5e:8509:: with SMTP id i9mr1914615ioj.0.1544783556031;
        Fri, 14 Dec 2018 02:32:36 -0800 (PST)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 2002:a24:54c8:: with SMTP id t191ls156506ita.5.canary-gmail; Fri,
 14 Dec 2018 02:32:34 -0800 (PST)
X-Received: by 2002:a24:414c:: with SMTP id x73mr2494463ita.129.1544783554468;
        Fri, 14 Dec 2018 02:32:34 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1544783554; cv=none;
        d=google.com; s=arc-20160816;
        b=SF+sX0HoryonyqI813rvrovnHNTLkbwnP103R6W/k4Q98qRiBPpXjSlfrWwAh/ncTt
         ZE7bjIdt6U3QdyfPqg01BqZlTz4Mz8H+/HMdlpb6bEi3DjEPouyBqFKnQ/R1nr0pbYPc
         JsXvmSjeEFumDD8J0P64PAL2/LFrkum7ek1D26DvEEDX/kmOpW4mEITo3Qq2KcxX/ZFn
         QNeSCLeqDGtDZKrUXMAg19/uvUJFouWqsSXbnlqYxMbOalNcCjJC/oANkEjP6feRVT1k
         +1Jmc4AlAQ0tkVvWoNci0prMQwzWI9CboqQO9z/BN/umSswkqIFV+VIzuUcj7KAdEv58
         loeg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=to:subject:message-id:date:from:in-reply-to:references:mime-version
         :dkim-signature;
        bh=qQMhCo8MI1ThXToVIDXwNLd0p+LZuPpC6AyR8PlOWoY=;
        b=bMiNtV7/XD5/VIaRyE+hovG7hEeP7vpUIGPepLsPhyWXayZPNiAt9scgk0Pj/vmxoV
         IXxYoyCdaklLcwV0RSXiZ4PLn3SPUDt/FALwS9MUfWINZ7TIEBvNOqr3zxzwMCYcVV7y
         3mhK4CBGEJABD8a/q9obH3MPRw6I1k2vJdvkplnrciJY4h6AUB26lbyQC8JYhsliNlYP
         0NqNsfVxwHpnBBeBBp/bXFoNB0n11fzgRzB8d6dWmq2SyjBFXkkCLBfH6sl2/TjCl2Bz
         JHVAaI+b/rqyAIo0rUTs0Xt/IdUhgmPSfscfkRrswbN/8880fvKMFNhFxLqBDUo8vGPj
         ZIpg==
ARC-Authentication-Results: i=1; mx.google.com;
       dkim=pass header.i=@gmail.com header.s=20161025 header.b=XkCoTg3p;
       spf=pass (google.com: domain of hodges.r@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=hodges.r@gmail.com;
       dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com
Original-Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41])
        by mx.google.com with SMTPS id u17sor9358121itb.18.2018.12.14.02.32.34
        for <std-proposals@isocpp.org>
        (Google Transport Security);
        Fri, 14 Dec 2018 02:32:34 -0800 (PST)
Received-SPF: pass (google.com: domain of hodges.r@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;
X-Received: by 2002:a24:64e:: with SMTP id 75mr2779780itv.15.1544783553914;
 Fri, 14 Dec 2018 02:32:33 -0800 (PST)
In-Reply-To: <4fe7ab83-be8f-4f62-a1a4-72b39fb540d3@isocpp.org>
X-Original-Sender: hodges.r@gmail.com
X-Original-Authentication-Results: mx.google.com;       dkim=pass
 header.i=@gmail.com header.s=20161025 header.b=XkCoTg3p;       spf=pass
 (google.com: domain of hodges.r@gmail.com designates 209.85.220.41 as
 permitted sender) smtp.mailfrom=hodges.r@gmail.com;       dmarc=pass (p=NONE
 sp=QUARANTINE dis=NONE) header.from=gmail.com
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Spam-Checked-In-Group: std-proposals@isocpp.org
X-Google-Group-Id: 399137483710
List-Post: <https://groups.google.com/a/isocpp.org/group/std-proposals/post>, <mailto:std-proposals@isocpp.org>
List-Help: <https://support.google.com/a/isocpp.org/bin/topic.py?topic=25838>, <mailto:std-proposals+help@isocpp.org>
List-Archive: <https://groups.google.com/a/isocpp.org/group/std-proposals/>
List-Subscribe: <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>,
 <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:41267
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/41267>

--000000000000fc6c9e057cf8f215
Content-Type: text/plain; charset="UTF-8"

On Fri, 14 Dec 2018 at 16:20, Alberto Barbati <albertobarbati@gmail.com>
wrote:

> Hi Frank,
>
> I believe you are missing the point of "if constexpr". The real usefulness
> of "if constexpr" is that it makes the branch that is not selected a
> "discarded statement" so that it doesn't trigger compilation errors if it
> is ill-formed after template parameters substitution. In the case of the
> for statement, that usefulness simply isn't there, because there's only one
> statement to consider, so either it is ill-formed for all iterations or
> none of them. The idea of having the iteration variable constexpr is
> intriguing, but I'm not totally sure that it has a real usefulness,
> especially after the introduction of consteval functions. The switch
> statement is a bit more complicated, as its structure is too "flexible",
> with jumps at labels that may not respect scopes. Because of that a switch
> is *not* equivalent to a cascade of if-statements at least in the general
> case.
>
> Anyway, your proposal indicates a possibile solution but doesn't describe
> a real problem that the proposal is trying to solve. I am afraid but "It
> would be nice to have this..." is not a satisfactory description of real
> problem.
>

I think the use case and problem domain are quite well understood. consider
runtime-to-compile-time state dispatcher:

    auto disp = dispatcher
    {
        foo,
        bar,
        baz,
        [] { foo(); bar(); },
        [] { foo(); bar(); baz(); },
    };

    disp(4);  // execute foo(), bar(), baz()

(see the full working horror show here:
https://coliru.stacked-crooked.com/a/1cab88f58a218b02)

It would be very convenient (and much more readable) to be able to write:

for constexpr (std::size_t = 0 ; i < std::tuple_size_v(decltype(disp))
; ++i)
{
  if (i == which)                // if there is a match...
  {
    std::get<i>(disp)();         // ... dispatch the function. i is
constexpr
    break;                       // ... and exit the search early
  }
}
else
{
  // none of the iterations issued a break;
  throw std::invalid_argument("index too large: "s + std::to_string(which);
}

The advantages become more pronounced with the new hypothetical approach
when we consider that the dispatch is no longer limited to one argument or
return type. It can be easy selected on the basis of the (constexpr) value
of i.


> Alberto
>
>
> --
> 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/4fe7ab83-be8f-4f62-a1a4-72b39fb540d3%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/4fe7ab83-be8f-4f62-a1a4-72b39fb540d3%40isocpp.org?utm_medium=email&utm_source=footer>
> .
>


-- 
Richard Hodges
hodges.r@gmail.com
office: +442032898513
home: +376841522
mobile: +376380212 (this will be *expensive* outside Andorra!)
skype: madmongo
facebook: hodges.r

-- 
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/CALvx3hbM2dPOgHh%3D2NvjhoC2kuv9doA9xWdVKJ2cT_upipRKfw%40mail.gmail.com.

--000000000000fc6c9e057cf8f215
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><br><br><div class=3D"gm=
ail_quote"><div dir=3D"ltr">On Fri, 14 Dec 2018 at 16:20, Alberto Barbati &=
lt;<a href=3D"mailto:albertobarbati@gmail.com">albertobarbati@gmail.com</a>=
&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div=
 dir=3D"ltr"><div>Hi Frank,</div><div><br></div><div>I believe you are miss=
ing the point of &quot;if constexpr&quot;. The real usefulness of &quot;if =
constexpr&quot; is that it makes the branch that is not selected a &quot;di=
scarded statement&quot; so that it doesn&#39;t trigger compilation errors i=
f it is ill-formed after template parameters substitution. In the case of t=
he for statement, that usefulness simply isn&#39;t there, because there&#39=
;s only one statement to consider, so either it is ill-formed for all itera=
tions or none of them. The idea of having the iteration variable constexpr =
is intriguing, but I&#39;m not totally sure that it has a real usefulness, =
especially after the introduction of consteval functions. The switch statem=
ent is a bit more complicated, as its structure is too &quot;flexible&quot;=
, with jumps at labels that may not respect scopes. Because of that a switc=
h is *not* equivalent to a cascade of if-statements at least in the general=
 case.</div><div><br></div><div>Anyway, your proposal indicates a possibile=
 solution but doesn&#39;t describe a real problem that the proposal is tryi=
ng to solve. I am afraid but &quot;<span style=3D"font-family:arial,sans-se=
rif">It would be nice to have this...&quot; is not a satisfactory descripti=
on of real problem.<br></span></div></div></blockquote><div><br></div><div>=
I think the use case and problem domain are quite well understood. consider=
 runtime-to-compile-time state dispatcher:</div><div><br></div><div><div><f=
ont face=3D"monospace, monospace">=C2=A0 =C2=A0 auto disp =3D dispatcher</f=
ont></div><div><font face=3D"monospace, monospace">=C2=A0 =C2=A0 {</font></=
div><div><font face=3D"monospace, monospace">=C2=A0 =C2=A0 =C2=A0 =C2=A0 fo=
o,</font></div><div><font face=3D"monospace, monospace">=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 bar,</font></div><div><font face=3D"monospace, monospace">=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 baz,</font></div><div><font face=3D"monospace, monosp=
ace">=C2=A0 =C2=A0 =C2=A0 =C2=A0 [] { foo(); bar(); },</font></div><div><fo=
nt face=3D"monospace, monospace">=C2=A0 =C2=A0 =C2=A0 =C2=A0 [] { foo(); ba=
r(); baz(); },</font></div><div><font face=3D"monospace, monospace">=C2=A0 =
=C2=A0 };</font></div><div><font face=3D"monospace, monospace"><br></font><=
/div><div><span style=3D"font-family:monospace,monospace">=C2=A0 =C2=A0 dis=
p(4);=C2=A0 // execute foo(), bar(), baz()</span><br></div></div><div><br><=
/div><div>(see the full working horror show here:=C2=A0<a href=3D"https://c=
oliru.stacked-crooked.com/a/1cab88f58a218b02">https://coliru.stacked-crooke=
d.com/a/1cab88f58a218b02</a>)</div><div><br></div><div>It would be very con=
venient (and much more readable) to be able to write:</div><div><br></div><=
div><span style=3D"font-family:monospace,monospace">for constexpr (std::siz=
e_t =3D 0 ; i &lt; std::tuple_size_v(decltype(disp)) ;=C2=A0++i)</span><br>=
</div><div><font face=3D"monospace, monospace">{</font></div><div><font fac=
e=3D"monospace, monospace">=C2=A0 if (i =3D=3D which)=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 // if there is a match...</font></div><d=
iv><font face=3D"monospace, monospace">=C2=A0 {</font></div><div><font face=
=3D"monospace, monospace">=C2=A0 =C2=A0 std::get&lt;i&gt;(disp)();=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0// ... dispatch the function. i is constexpr</fo=
nt></div><div><font face=3D"monospace, monospace">=C2=A0 =C2=A0 break;=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0// ... and exit the search early</font></div><div><font face=3D"monos=
pace, monospace">=C2=A0 }</font></div><div><font face=3D"monospace, monospa=
ce">}</font></div><div><font face=3D"monospace, monospace">else</font></div=
><div><font face=3D"monospace, monospace">{</font></div><div><font face=3D"=
monospace, monospace">=C2=A0 // none of the iterations issued a break;</fon=
t></div><div><span style=3D"font-family:monospace,monospace">=C2=A0 throw s=
td::invalid_argument(&quot;index too large: &quot;s=C2=A0+ std::to_string(w=
hich);</span><br></div><div><font face=3D"monospace, monospace">}</font></d=
iv><div>=C2=A0</div><div>The advantages become more pronounced with the new=
 hypothetical approach when we consider that the dispatch is no longer limi=
ted to one argument or return type. It can be easy selected on the basis of=
 the (constexpr) value of i.</div><div><br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div dir=3D"ltr"><div><span style=3D"font-family:ar=
ial,sans-serif"></span></div><div><span style=3D"font-family:arial,sans-ser=
if"><br></span></div><div><span style=3D"font-family:arial,sans-serif">Albe=
rto<br></span></div><br><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" target=3D"_=
blank">std-proposals+unsubscribe@isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">std-proposals@isocpp.org</a>.<br>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/4fe7ab83-be8f-4f62-a1a4-72b39fb540d3%=
40isocpp.org?utm_medium=3Demail&amp;utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/4fe7ab83-be8f-=
4f62-a1a4-72b39fb540d3%40isocpp.org</a>.<br>
</blockquote></div><br clear=3D"all"><div><br></div>-- <br><div dir=3D"ltr"=
 class=3D"gmail_signature"><div dir=3D"ltr">Richard Hodges<div><a href=3D"m=
ailto:hodges.r@gmail.com" target=3D"_blank">hodges.r@gmail.com</a></div><di=
v>office: +442032898513</div><div>home: +376841522</div><div>mobile:=C2=A0+=
376380212 (this will be *expensive* outside Andorra!)</div><div>skype: madm=
ongo</div><div>facebook: hodges.r</div><div><br></div></div></div></div></d=
iv></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/CALvx3hbM2dPOgHh%3D2NvjhoC2kuv9doA9xW=
dVKJ2cT_upipRKfw%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CALvx3hbM2dPOgH=
h%3D2NvjhoC2kuv9doA9xWdVKJ2cT_upipRKfw%40mail.gmail.com</a>.<br />

--000000000000fc6c9e057cf8f215--

.
