Displaying 3 results from an estimated 3 matches for "convertibletorange".
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)
...terators make templates of everything, causing code bloat. In
my code, rather than pass the separate parameters I use a range<Iter>
class something like this:
template<typename Iter>
class range {
Iter Begin, End;
public:
range() : Begin(), End() { }
template<typename ConvertibleToRange>
range(T &seq) : Begin(seq.begin()), End(seq.end()) { }
Iter begin() { return Begin; }
Iter end() { return End; }
// ... other Sequence methods ...
};
And encapsulate the logic to deal with the empty sequence problem in a
function:
template<typename ConvertibleToRange>...
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.