$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [Pointer Container] Modification of pointer containers to allow const elements
From: Gerardo Hernandez (g.hernandez_at_[hidden])
Date: 2010-10-15 16:04:44
2010/10/15 John Bytheway <jbytheway+boost_at_[hidden]>:
> I presume that Scott only intended to suggest abandoning
> const-correctness in the implementation, not the interface. Thus the
> above assignment would still cause an error. Since type safety has
> already been abandoned by making all pointers void*, const-correctness
> doesn't seem much of an additional sacrifice.
I see the point. But I do not understand the advantage of using a
single underlying type instead of two (which I presume was also
Thorsten idea). Using always void* would not only require a lot of
const_cast when returning data from the containers but also think that
ptr_vector<T>::iterator must be of different type as ptr_vector<const
T>::iterator, as:
boost::ptr_vector<const int> v;
v.push_back(new int);
(*v.begin()) = 2;
shall also be compiler error, as the container contains const elements.
To sum up I think it is best to use the metafunction when
instantiating the underlying type, as the implementation is simpler.