Displaying 3 results from an estimated 3 matches for "range_trait".
Did you mean:
range_traits
2009 May 15
0
[LLVMdev] Removing std::vector from APIs (was Re: Mutating the elements of a ConstantArray)
On Friday 15 May 2009 05:50, Jay Foad wrote:
> > 3. Any comments on the patch itself?
> >
> > The one major thing to be aware of is that it isn't safe to use &V[0]
> > when V is an empty std::vector
>
> Oh dear. That's a bit of a flaw in the plan. I suppose the solution is
> to switch to SmallVector whenever this might be a problem.
Or use iterators.
2009 May 15
2
[LLVMdev] Removing std::vector from APIs (was Re: Mutating the elements of a ConstantArray)
...* which adds a template constructor:
template<typename T>
template<size_t N>
range<T*>::range<T*>(T (&arr)[N]) : Begin(arr), End(arr + N) { }
or by (2a) using a traits type to look up ConvertibleToRange::iterator
& -::value_type
template<typename T>
struct range_traits {
typedef typename T::value_type value_type;
typedef typename T::iterator iterator;
// .. etc ...
};
template<typename T, size_t N>
struct range_traits<T[N]> {
typedef T value_type;
typedef T *iterator;
// .. etc ...
};
and by (2b) indirecting calls to seq.begin() a...
2009 May 15
3
[LLVMdev] Removing std::vector from APIs (was Re: Mutating the elements of a ConstantArray)
> 3. Any comments on the patch itself?
>
> The one major thing to be aware of is that it isn't safe to use &V[0] when V
> is an empty std::vector
Oh dear. That's a bit of a flaw in the plan. I suppose the solution is
to switch to SmallVector whenever this might be a problem.
I'm a bit concerned that any new &empty[0] problems that are
introduced will go unnoticed.