Kinds of containers
Timon Gehr via Digitalmars-d
digitalmars-d at puremagic.com
Sun Oct 25 14:06:10 PDT 2015
On 10/25/2015 08:31 PM, Andrei Alexandrescu wrote:
> On 10/23/2015 07:21 PM, bigsandwich wrote:
>> On Friday, 23 October 2015 at 17:44:55 UTC, deadalnix wrote:
>>> On Friday, 23 October 2015 at 11:03:37 UTC, Andrei Alexandrescu wrote:
>>>> [...]
>>>
>>> Sure. We have a problem when it come to collection in the fact that
>>> type qualifier do not turtle down as one would expect.
>>>
>>> [...]
>>
>> Its not just type qualifiers. Containers of derived types have the same
>> problem. This is also a problem in C++.
>
> This is something easy to live with. In fact, mutable containers are not
> supposed to even convert to containers of base objects. -- Andrei
>
This is true for containers with reference semantics, but not for
containers with value semantics.
This compiles (D code):
class A{}
class B: A{}
void main(){
A[2] a;
B[2] b;
a=b;
}
This does not compile (C++ code):
class A{};
class B: A{};
int main(){
vector<A*> a;
vector<B*> b;
a=b;
}
However, the conversion would be safe. For persistent and COW
containers, the copy would even be fast.
More information about the Digitalmars-d
mailing list