220 4795 <ee935af8-a586-4898-9042-9ef04d909cfa@isocpp.org> article
Path: news.gmane.org!not-for-mail
From: Mikhail Semenov <mikhailsemenov1957@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Changing lambda scope
Date: Sun, 2 Jun 2013 11:12:57 -0700 (PDT)
Lines: 110
Approved: news@gmane.org
Message-ID: <ee935af8-a586-4898-9042-9ef04d909cfa@isocpp.org>
References: <ae01f736-d3ac-48d6-981f-702b9ab2b3b3@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: plane.gmane.org
Mime-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_26_9023732.1370196777509"
X-Trace: ger.gmane.org 1370196780 10939 80.91.229.3 (2 Jun 2013 18:13:00 GMT)
X-Complaints-To: usenet@ger.gmane.org
NNTP-Posting-Date: Sun, 2 Jun 2013 18:13:00 +0000 (UTC)
To: std-proposals@isocpp.org
Original-X-From: std-proposals+bncBDC55PNFRYGRBKUWV2GQKGQESQ5CBTY@isocpp.org Sun Jun 02 20:13:01 2013
Return-path: <std-proposals+bncBDC55PNFRYGRBKUWV2GQKGQESQ5CBTY@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-yh0-f71.google.com ([209.85.213.71])
	by plane.gmane.org with esmtp (Exim 4.69)
	(envelope-from <std-proposals+bncBDC55PNFRYGRBKUWV2GQKGQESQ5CBTY@isocpp.org>)
	id 1UjCm4-0002Bf-3S
	for gclcip-std-proposals@m.gmane.org; Sun, 02 Jun 2013 20:13:00 +0200
Original-Received: by mail-yh0-f71.google.com with SMTP id a41sf4602169yho.10
        for <gclcip-std-proposals@m.gmane.org>; Sun, 02 Jun 2013 11:12:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=x-beenthere:date:from:to:message-id:in-reply-to:references:subject
         :mime-version:x-original-sender:reply-to:precedence:mailing-list
         :list-id:x-google-group-id:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe:content-type;
        bh=omfkQRsvlEghB6eloKmvTyGVlN5kU/joWrPYiLX6cgg=;
        b=bsv5s/Tz1qJPkOTnjxIZJ4xv8muKBKYNmpU4NZhmDlKWGvX3IrNQ5q0ugfKtKE5t0R
         OX03thOH3Gt+lfhGuD1teNN+4wS/uVc9rMNsGvC4G55jYe//pTiSlDqGbyq3VnUibblh
         UVcMiNCpXCooThyMkrwto7sWZOdKHI2MbliL8TFhZbdtVv+NDWelGKKemWgHQeCNgwJG
         Etnf68lEdx3lVKa06ZDIK7StKCOIfO/BVTdbF6SII9EVUW8m4pPXZzrKLWZOnYgoOt/B
         b6Ho8GHsD+pu2/ZoA4hyEiDkhFnD88BSrc6rEv2jvdYBr2zVKJtLJ35l6vQVnhr0jbuX
         yoew==
X-Received: by 10.224.174.145 with SMTP id t17mr12047294qaz.4.1370196778911;
        Sun, 02 Jun 2013 11:12:58 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.49.86.202 with SMTP id r10ls1814974qez.86.gmail; Sun, 02 Jun
 2013 11:12:58 -0700 (PDT)
X-Received: by 10.49.1.197 with SMTP id 5mr1432683qeo.24.1370196778039;
        Sun, 02 Jun 2013 11:12:58 -0700 (PDT)
In-Reply-To: <ae01f736-d3ac-48d6-981f-702b9ab2b3b3@isocpp.org>
X-Original-Sender: mikhailsemenov1957@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: <http://groups.google.com/a/isocpp.org/group/std-proposals/post?hl=en>,
 <mailto:std-proposals@isocpp.org>
List-Help: <http://support.google.com/a/isocpp.org/bin/topic.py?hl=en&topic=25838>,
 <mailto:std-proposals+help@isocpp.org>
List-Archive: <http://groups.google.com/a/isocpp.org/group/std-proposals/?hl=en>
List-Subscribe: <http://groups.google.com/a/isocpp.org/group/std-proposals/subscribe?hl=en>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <http://groups.google.com/a/isocpp.org/group/std-proposals/subscribe?hl=en>,
 <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:4795
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/4795>

------=_Part_26_9023732.1370196777509
Content-Type: text/plain; charset=ISO-8859-1


>
> And the following code works. I think auto may be the problem.
>
#include <iostream>
#include <functional>
bool ok = true;
namespace range 
{
    template<typename R, typename L> auto operator|(L l, R r) // -> int
    {
         return l(ok)+r(ok);        
    }
    template<typename T> auto map(T t) //-> std::function<int(bool)>
    {
        return [=](bool range) -> int
        {
            if (range) return t.i;
            return 0;
        };
    }
}
struct A
{
   int i;
   A(int i1):i(i1) {}
};

int main() 
{    
    A a1(5);
    A a2(6);
    int k =
        range::map(a1)
        | range::map(a2);
    std::cout << k << std::endl;  // 11      
    ok = false;
    
    k =
        range::map(a1)
        | range::map(a2);
    std::cout << k << std::endl;  // 0      
    
} 

-- 

--- 
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.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/?hl=en.



------=_Part_26_9023732.1370196777509
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<blockquote class=3D"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; paddi=
ng-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px=
; border-left-style: solid;"><div>And the following code works. I think aut=
o may be the problem.</div></blockquote><div><font face=3D"courier new,mono=
space">#include &lt;iostream&gt;<br>#include &lt;functional&gt;</font></div=
><div><font face=3D"courier new,monospace">bool ok =3D true;<br>namespace r=
ange <br>{<br>&nbsp;&nbsp;&nbsp; template&lt;typename R, typename L&gt; aut=
o operator|(L l, R r) // -&gt; int<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return l(ok)+r(ok);&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; templ=
ate&lt;typename T&gt; auto map(T t) //-&gt; std::function&lt;int(bool)&gt;<=
br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retur=
n [=3D](bool range) -&gt; int<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if=
 (range) return t.i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp; return 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<=
br>&nbsp;&nbsp;&nbsp; }<br>}</font></div><div><font face=3D"courier new,mon=
ospace">struct A<br>{<br>&nbsp;&nbsp; int i;<br>&nbsp;&nbsp; A(int i1):i(i1=
) {}<br>};</font></div><div><br><font face=3D"courier new,monospace">int ma=
in() <br>{&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; A a1(5);<br>&nbsp;&nbsp=
;&nbsp; A a2(6);<br>&nbsp;&nbsp;&nbsp; int k =3D<br>&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp; range::map(a1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp; | range::map(a2);<br>&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; k &lt;&lt;=
 std::endl;&nbsp; // 11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp=
; ok =3D false;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; k =3D<br>&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range::map(a1)<br>&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp; | range::map(a2);<br>&nbsp;&nbsp;&nbsp; std::cout &=
lt;&lt; k &lt;&lt; std::endl;&nbsp; // 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>=
&nbsp;&nbsp;&nbsp; <br>}</font>&nbsp;</div>

<p></p>

-- <br />
&nbsp;<br />
--- <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 std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/?hl=3Den">http://groups.google.com/a/isocpp.org/group/std-pro=
posals/?hl=3Den</a>.<br />
&nbsp;<br />
&nbsp;<br />

------=_Part_26_9023732.1370196777509--

.
