Boost logo

Boost :

Subject: Re: [boost] [smart-ptr][containers] type of the operator[] index
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2011-12-04 13:24:23


On Sunday, December 04, 2011 19:17:46 Vicente J. Botet Escriba wrote:
> Le 04/12/11 18:02, Andrey Semashev a écrit :
> > On Sunday, December 04, 2011 17:46:02 Vicente J. Botet Escriba wrote:
> >> Hi,
> >>
> >> which is the correct type used as index of operator[]. scoped_array
> >> uses
> >> std::ptrdiff_t. Others containers use std::size_t.
> >>
> >>
> >> When using an index to move from a scoped_array to another container
> >> which should be the type if the index?
> >
> > In containers, there isn't any sense in negative indices since they are
> > always relative to the beginning of the container (and there isn't any
> > elements before the beginning). This is not true for pointers or
> > iterators since a pointer may refer to an element in the midst of a
> > valid range.
> >
> > Smart pointers might depart from raw pointers in this regard because
> > they also tend to point to the beginning of the range. But as I see it,
> > they also accept ptrdiff_t to be as close to raw pointers as possible.
>
> Scoped_array can not take a pointer in the middle of the allocated array
> as its role is to delete it.

Exactly.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk