> From: Stefan Seefeld <ste...@seefeld.name>
> To: cplusplus-sig@python.org > Cc: > Sent: Saturday, May 30, 2015 12:57 AM > Subject: Re: [C++-sig] C++ copy construction and Python object copies > > On 29/05/15 06:48 PM, Alex Mohr wrote: >> On 5/29/2015 7:28 AM, Stefan Seefeld wrote: >>> Python's copy module allows for objects to be copied. The protocol > for >>> this will look up special method __copy__. It seems to me that this >>> would trivially work for C++ objects providing a copy-constructor. >>> However, the copy-constructor isn't automatically bound to > __copy__. >>> While I can certainly add that in user-code, I wonder why this > isn't >>> done by Boost.Python itself. >>> Does anyone know the reasons for this ? Would it seem useful to add > that >>> feature ? >> >> The __copy__ method's intended semantics are to produce a > "shallow" >> copy while the __deepcopy__ method is meant to produce a "deep" > copy. >> Given a C++ class with a copy ctor, it's hard to know which is more >> appropriate. For instance, copying a shared_ptr<T> is like a >> "shallow" copy but copying a vector<pair<int, float>> > is like a deep >> copy. On the other hand copying a vector<shared_ptr<T>> is > more like >> a shallow copy. >> >> I wouldn't mind an opt-in convenience utility that adds a __copy__ or >> __deepcopy__ method, but given the semantic subtlety, I think trying >> to do it automatically is dicey. > > That's a fair point. > I agree with Alex Mohr. Adding some mechanism of implementing the copy using copy constructor would be welcome. But doing it automatically wouldn't be ok. I think that explicit is better than implicit. Trigve _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org https://mail.python.org/mailman/listinfo/cplusplus-sig