220 35134 <ff377bea-cbde-4ea4-a4f2-72266e163727@isocpp.org> article
Path: news.gmane.org!.POSTED!not-for-mail
From: Giovanni Piero Deretta <gpderetta@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Lookup in if constexpr discarded substatement
Date: Mon, 30 Oct 2017 07:17:17 -0700 (PDT)
Lines: 112
Approved: news@gmane.org
Message-ID: <ff377bea-cbde-4ea4-a4f2-72266e163727@isocpp.org>
References: <05ed746c-e02b-410f-a0f7-1800ab5fbc11@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_6671_827955059.1509373037607"
X-Trace: blaine.gmane.org 1509373042 30459 195.159.176.226 (30 Oct 2017 14:17:22 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Mon, 30 Oct 2017 14:17:22 +0000 (UTC)
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBDEP3I7TGEIO52G4Z4CRUBDAPKSX4@isocpp.org Mon Oct 30 15:17:13 2017
Return-path: <std-proposals+bncBDEP3I7TGEIO52G4Z4CRUBDAPKSX4@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-vk0-f69.google.com ([209.85.213.69])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBDEP3I7TGEIO52G4Z4CRUBDAPKSX4@isocpp.org>)
	id 1e9AsK-00070Q-Mb
	for gclcip-std-proposals@m.gmane.org; Mon, 30 Oct 2017 15:17:12 +0100
Original-Received: by mail-vk0-f69.google.com with SMTP id q75sf6892823vkf.4
        for <gclcip-std-proposals@m.gmane.org>; Mon, 30 Oct 2017 07:17:20 -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=Z8fGWcxz7ei1yBsiEYsi5vTVE9UJlDI7g8eQiuuu270=;
        b=Glp6RdTHNVmwgUq4HNwT0TkSZ78R3cQSqqDGeW0uGwexZLX0SA1F4jLnrPY/P4Q942
         E0pWL4FFy6vGOpdmPz7mA73K1nuMFveXUKhhqRz7DSJXscSaIHG39c+WVP81VI3lS9K9
         6ELTTZhv/iDfB3nz7Ka1eAb5mY7zPoTjSwMTq3q8EDx6wm3sz+M9wSHyuvCKWUGrxiXp
         SRX/6PifM2e/Za3zY0keg92G+N+vwzmeaRxzaQj81S8kHP1Zl4oel106TFcOMhOBdNn3
         aXlOWZB3jNVamCp5JqQjZTCBvSYmnarcie2qIf6Koa9sHLVBGkvh4QyZjQ2g6OBUBVOX
         KhEA==
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=Z8fGWcxz7ei1yBsiEYsi5vTVE9UJlDI7g8eQiuuu270=;
        b=JI7/QQGRRGW1TMekgBaDr2/IeqEGioCDtlVsrnqICEgsaa4d7LW7giPTiQYAorUDi1
         uLkckInVpRie71IETwr8Wiar5PQMxsb3j3z27hfYNg97M2Y44iI9NZZSN8x4G3QYO0pr
         BHA/2Qb994kq8UFNS3Uz/bp4Zxz1hNJbyT9E5bhdBUL9QBgYH0TzWU+6NOcja8mfWXMW
         0R4vMVQG0A+BnMLcRXXeioi6EjqFf68r99YJL3qlUchAUBQR5rItsuvU5nd2q1HxB/mr
         dOfK94Fo/53Dom97ZBtT886oSwICijCNfq9GncXzjRo6F7U6NhQE4FWPHesy4M00cQGR
         qJMg==
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=Z8fGWcxz7ei1yBsiEYsi5vTVE9UJlDI7g8eQiuuu270=;
        b=qy+xl6E5pNlUek5NEGhRzQct63cfBW8tBScBEi7av22MeOY37UAcRox1JJdxEx6klP
         oaDR4EgQRBw3kc2UVAot2bxRFkKaoi6eKPEIyOKabM/0Uxao21htoo4Xw6mKiw+MSNY8
         OLfUOJ5lKE4fbx3PoZ73xD3NjSGF/nR9b+QVt82twnjSNBFDHxoZIgBWLffp0mnN0nCq
         T9v2IOM8/62uQiKCQQitWv1tyu7MubwSjPBvEDNVZ8uTTEdZlp8yN90oeuEpwY/SFeLT
         ymwJNQIfD9p7+Qy5JdsODTyHE4JpRECtpCAVLnR5yFaPDysW1d8+HSGd0Y2VsVdAJSwH
         ILIQ==
X-Gm-Message-State: AMCzsaX3Fmj34ezId6nrS7lkqagDDgZHvy6hTuc/oOh6wKyEhQ9kG13D
	XOwW6YAfbskWm56qrUFoVsYTCg==
X-Google-Smtp-Source: ABhQp+ReCRntf7B1wTRkcGRuaKChZRkUEgZc8Nj/t3HD1rYh1mEfBnfLQAWNTp1Y1wnOzSvo5x77rg==
X-Received: by 10.31.5.144 with SMTP id 138mr6427362vkf.103.1509373039833;
        Mon, 30 Oct 2017 07:17:19 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.31.115.6 with SMTP id o6ls3368397vkc.14.gmail; Mon, 30 Oct
 2017 07:17:18 -0700 (PDT)
X-Received: by 10.31.96.146 with SMTP id u140mr1626709vkb.2.1509373038186;
        Mon, 30 Oct 2017 07:17:18 -0700 (PDT)
In-Reply-To: <05ed746c-e02b-410f-a0f7-1800ab5fbc11@isocpp.org>
X-Original-Sender: gpderetta@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:35134
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/35134>

------=_Part_6671_827955059.1509373037607
Content-Type: multipart/alternative; 
	boundary="----=_Part_6672_848649576.1509373037608"

------=_Part_6672_848649576.1509373037608
Content-Type: text/plain; charset="UTF-8"



On Wednesday, October 25, 2017 at 1:39:53 PM UTC+1, Corentin wrote:
>
> Hello.
>
> Currently, the discarded if-constexpr sub-statements are fully parsed, 
> including name-lookup.
> Not performing name lookup, or ignoring name lookup failure within 
> discarded statements  could help get rid of some `#ifdef` macros, improving 
> readability and, more importantly, tooling.
>
>
> void f() {
>    if constexpr(false) {
>         UndeclaredMethod();
>    }
> }
>
> I think that the discarded blocks should still be parsed and contain valid 
> syntax.  Tooling can, for example, rename symbols within these statements, 
> whereas it can't inspect disabled `#ifdef` blocks without re-running the 
> processor.
>
>
> While playing with an orthogonal feature, I discovered that the MSVC 
> compiler has a keyword to disable a block of code if a particular symbol 
> does not exist https://msdn.microsoft.com/en-us/library/x7wy9xh3.aspx  
> However, I believe modifying `if constexpr` semantic would be a more 
> powerful and generic solution.
>
>
> What do you think ?
>

-- 
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/ff377bea-cbde-4ea4-a4f2-72266e163727%40isocpp.org.

------=_Part_6672_848649576.1509373037608
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><br>On Wednesday, October 25, 2017 at 1:39:53 PM UTC+1=
, Corentin 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">Hello.<div><br></div><div>Currently, the discarded if-constexpr sub-sta=
tements are fully parsed, including name-lookup.</div><div>Not performing n=
ame lookup, or ignoring name lookup failure within discarded statements=C2=
=A0 could help get rid of some `#ifdef` macros, improving readability and, =
more importantly, tooling.</div><div><br></div><div><br></div><div style=3D=
"background-color:rgb(250,250,250);border-color:rgb(187,187,187);border-sty=
le:solid;border-width:1px;word-wrap:break-word"><code><div><span style=3D"c=
olor:#008">void</span><span style=3D"color:#000"> f</span><span style=3D"co=
lor:#660">()</span><span style=3D"color:#000"> </span><span style=3D"color:=
#660">{</span><span style=3D"color:#000"><br>=C2=A0 =C2=A0</span><span styl=
e=3D"color:#008">if</span><span style=3D"color:#000"> </span><span style=3D=
"color:#008">constexpr</span><span style=3D"color:#660">(</span><span style=
=3D"color:#008">false</span><span style=3D"color:#660">)</span><span style=
=3D"color:#000"> </span><span style=3D"color:#660">{</span><span style=3D"c=
olor:#000"><br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 </span><span style=3D"color:#606=
">UndeclaredMethod</span><span style=3D"color:#660">();</span><span style=
=3D"color:#000"><br>=C2=A0 =C2=A0</span><span style=3D"color:#660">}</span>=
<span style=3D"color:#000"><br></span><span style=3D"color:#660">}</span><s=
pan style=3D"color:#000"><br></span></div></code></div><div><br></div><div>=
I think that the discarded blocks should still be parsed and contain valid =
syntax.=C2=A0 Tooling can, for example, rename symbols within these stateme=
nts, whereas it can&#39;t inspect disabled `#ifdef` blocks without re-runni=
ng the processor.</div><div><br></div><div><br>While playing with an orthog=
onal feature, I discovered that the MSVC compiler has a keyword to disable =
a block of code if a particular symbol does not exist=C2=A0<a href=3D"https=
://msdn.microsoft.com/en-us/library/x7wy9xh3.aspx" target=3D"_blank" rel=3D=
"nofollow" onmousedown=3D"this.href=3D&#39;https://www.google.com/url?q\x3d=
https%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fx7wy9xh3.aspx\x26sa\x3=
dD\x26sntz\x3d1\x26usg\x3dAFQjCNFl--Igq1dgZGr9q1Mo7aIuLDjPVw&#39;;return tr=
ue;" onclick=3D"this.href=3D&#39;https://www.google.com/url?q\x3dhttps%3A%2=
F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fx7wy9xh3.aspx\x26sa\x3dD\x26sntz=
\x3d1\x26usg\x3dAFQjCNFl--Igq1dgZGr9q1Mo7aIuLDjPVw&#39;;return true;">https=
://msdn.microsoft.<wbr>com/en-us/library/x7wy9xh3.<wbr>aspx</a>=C2=A0 Howev=
er, I believe modifying `if constexpr` semantic would be a more powerful an=
d generic solution.</div><div><br></div><div><br></div><div>What do you thi=
nk ?</div></div></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/ff377bea-cbde-4ea4-a4f2-72266e163727%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/ff377bea-cbde-4ea4-a4f2-72266e163727=
%40isocpp.org</a>.<br />

------=_Part_6672_848649576.1509373037608--

------=_Part_6671_827955059.1509373037607--

.
