220 6099 <fd681dd2-c4dc-429d-96fd-4442b5122f9f@isocpp.org> article
Path: news.gmane.org!not-for-mail
From: cornedbee@google.com
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Re: Proposal: Mixins for C++
Date: Mon, 2 Sep 2013 07:24:26 -0700 (PDT)
Lines: 152
Approved: news@gmane.org
Message-ID: <fd681dd2-c4dc-429d-96fd-4442b5122f9f@isocpp.org>
References: <CAPQusr_3GFw+pTaB=UKeBCLRXGg9Qkxzi1T+ZrQiKriQAtWsWg@mail.gmail.com> <1ff4e759-ddf8-481a-ae5d-33f492e4665d@isocpp.org>
 <52219447.2070501@wanadoo.fr>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: plane.gmane.org
Mime-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_1984_9083185.1378131866915"
X-Trace: ger.gmane.org 1378131865 18578 80.91.229.3 (2 Sep 2013 14:24:25 GMT)
X-Complaints-To: usenet@ger.gmane.org
NNTP-Posting-Date: Mon, 2 Sep 2013 14:24:25 +0000 (UTC)
To: std-proposals@isocpp.org
Original-X-From: std-proposals+bncBD43DGWT5IFRBG57SKIQKGQEWBXXGCA@isocpp.org Mon Sep 02 16:24:29 2013
Return-path: <std-proposals+bncBD43DGWT5IFRBG57SKIQKGQEWBXXGCA@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-qe0-f69.google.com ([209.85.128.69])
	by plane.gmane.org with esmtp (Exim 4.69)
	(envelope-from <std-proposals+bncBD43DGWT5IFRBG57SKIQKGQEWBXXGCA@isocpp.org>)
	id 1VGV3M-0000Ku-MT
	for gclcip-std-proposals@m.gmane.org; Mon, 02 Sep 2013 16:24:28 +0200
Original-Received: by mail-qe0-f69.google.com with SMTP id 5sf5396576qeb.8
        for <gclcip-std-proposals@m.gmane.org>; Mon, 02 Sep 2013 07:24:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20120113;
        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
         :content-type;
        bh=kfeKo4AQfwunSYJebFU+3kCnKCbw0VJhV4lz/PoO3r0=;
        b=XUn3hERfkcs1mcwam9YeZEd3dbeYwghmwXUP75QENJCQa86dot3dFceUNm6b0wPNTq
         bl5umLcR031bqlF62P0DkrKzDkKQ5Z2LmSBfya513u7wcnhG4ikzZ3tvvk/GJUPv5YUs
         fk3TKPKrWo7G5/btliNXOPwWvvOoy4zDhwtG7lHjW1fZ2x6+WlZH8j/wWZyTKU8lDOSn
         ZSeHaONaESe8LquYZ/xvkNfrEm2tRwjCOeUtvi4sqDWNeHjqtK/drXAvVQuaeG3wkfJ0
         WL/cxukOeV2rjO68Cev//PP7Bldf3IT7FnwTDmFRGfwBKg56OpXc/EpZHfg1aKwm2noi
         cokw==
X-Received: by 10.236.227.165 with SMTP id d35mr151727yhq.51.1378131867832;
        Mon, 02 Sep 2013 07:24:27 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.49.1.227 with SMTP id 3ls2359644qep.84.gmail; Mon, 02 Sep 2013
 07:24:27 -0700 (PDT)
X-Received: by 10.49.25.83 with SMTP id a19mr1012177qeg.1.1378131867299;
        Mon, 02 Sep 2013 07:24:27 -0700 (PDT)
In-Reply-To: <52219447.2070501@wanadoo.fr>
X-Original-Sender: cornedbee@google.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>, <mailto:std-proposals@isocpp.org>
List-Help: <http://support.google.com/a/isocpp.org/bin/topic.py?topic=25838>, <mailto:std-proposals+help@isocpp.org>
List-Archive: <http://groups.google.com/a/isocpp.org/group/std-proposals/>
List-Subscribe: <http://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <http://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>,
 <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:6099
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/6099>

------=_Part_1984_9083185.1378131866915
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable



On Saturday, August 31, 2013 8:59:19 AM UTC+2, Vicente J. Botet Escriba=20
wrote:
>
>  Le 29/08/13 11:38, corn...@google.com <javascript:> a =E9crit :
> =20
>
>
> On Thursday, August 29, 2013 3:11:47 AM UTC+2, R=F3bert D=E1vid wrote:=20
>>
>>
>> Consider:
>>  mixin noncopyable {
>>   noncopyable(const noncopyable&) =3D delete;
>> };
>> struct Foo{
>>   using mixin noncopyable;
>> };
>> struct Bar : public Foo {
>>   Bar(const Bar&) : Foo() {}
>> }
>>  Is Bar noncopyable (conflicting with the copy constructor definition,=
=20
>> making Bar ill-formed)?
>>
>> =20
>  Bar is well-formed and copyable.
>
>  This seems counter intuitive. If Foo is not copyable, Bar canot be=20
> copyable.
> =20
>

Why? You just explicitly defined that Bar's notion of copying is to=20
default-construct the Foo part of the object. If you explicitly define the=
=20
copy constructor for a class, that class is copyable; everything else would=
=20
be highly counter-intuitive.
=20

--=20

---=20
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 e=
mail 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-proposa=
ls/.

------=_Part_1984_9083185.1378131866915
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><br>On Saturday, August 31, 2013 8:59:19 AM UTC+2, Vic=
ente J. Botet Escriba wrote:<blockquote class=3D"gmail_quote" style=3D"marg=
in: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">
 =20
   =20
 =20
  <div bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div>Le 29/08/13 11:38, <a href=3D"javascript:" target=3D"_blank" gdf-o=
bfuscated-mailto=3D"kBXbSWpoxtkJ">corn...@google.com</a>
      a =E9crit&nbsp;:<br>
    </div>
    <blockquote type=3D"cite">
      <div dir=3D"ltr"><br>
        <br>
        On Thursday, August 29, 2013 3:11:47 AM UTC+2, R=F3bert D=E1vid
        wrote:
        <blockquote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8=
ex;border-left:1px #ccc solid;padding-left:1ex">
          <div dir=3D"ltr"><br></div></blockquote></div></blockquote><block=
quote type=3D"cite"><div dir=3D"ltr"><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex=
"><div dir=3D"ltr">
            Consider:<br>
            <div style=3D"background-color:rgb(250,250,250);border-color:rg=
b(187,187,187);border-style:solid;border-width:1px;word-wrap:break-word"><c=
ode>
                <div><span style=3D"color:rgb(0,0,0)">mixin noncopyable </s=
pan><span style=3D"color:rgb(102,102,0)">{</span><span style=3D"color:rgb(0=
,0,0)"><br>
                    &nbsp; noncopyable</span><span style=3D"color:rgb(102,1=
02,0)">(</span><span style=3D"color:rgb(0,0,136)">const</span><span style=
=3D"color:rgb(0,0,0)"> noncopyable</span><span style=3D"color:rgb(102,102,0=
)">&amp;)</span><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"col=
or:rgb(102,102,0)">=3D</span><span style=3D"color:rgb(0,0,0)"> </span><span=
 style=3D"color:rgb(0,0,136)">delete</span><span style=3D"color:rgb(102,102=
,0)">;</span><span style=3D"color:rgb(0,0,0)"><br>
                  </span><span style=3D"color:rgb(102,102,0)">};</span><spa=
n style=3D"color:rgb(0,0,0)"><br>
                  </span><span style=3D"color:rgb(0,0,136)">struct</span><s=
pan style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(102,0,102)"=
>Foo</span><span style=3D"color:rgb(102,102,0)">{</span><span style=3D"colo=
r:rgb(0,0,0)"><br>
                    &nbsp; </span><span style=3D"color:rgb(0,0,136)">using<=
/span><span style=3D"color:rgb(0,0,0)"> mixin noncopyable</span><span style=
=3D"color:rgb(102,102,0)">;</span><span style=3D"color:rgb(0,0,0)"><br>
                  </span><span style=3D"color:rgb(102,102,0)">};</span><spa=
n style=3D"color:rgb(0,0,0)"><br>
                  </span><code><span style=3D"color:rgb(0,0,136)">struct</s=
pan><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(102,0=
,102)"></span></code><span style=3D"color:rgb(102,0,102)">Bar</span><span s=
tyle=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(102,102,0)">:</s=
pan><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(0,0,1=
36)">public</span><span style=3D"color:rgb(0,0,0)"> Foo {<br>
                    &nbsp; Bar(const Bar&amp;) : Foo() {}<br>
                    }<br>
                  </span></div>
              </code></div>
            Is Bar noncopyable (conflicting with the copy constructor
            definition, making Bar ill-formed)?<br>
            <br>
          </div>
        </blockquote>
        <div><br>
        </div>
        <div>Bar is well-formed and copyable.</div>
        <br>
      </div>
    </blockquote>
    This seems counter intuitive. If Foo is not copyable, Bar canot be
    copyable.<br>&nbsp;<br></div></blockquote><div><br></div><div>Why? You =
just explicitly defined that Bar's notion of copying is to default-construc=
t the Foo part of the object. If you explicitly define the copy constructor=
 for a class, that class is copyable; everything else would be highly count=
er-intuitive.</div><div>&nbsp;</div></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/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />

------=_Part_1984_9083185.1378131866915--

.
