unsafe STL patch
François Dumont
francois.cppdevs@free.fr
Fri Feb 5 05:34:00 GMT 2010
Paolo Carlini wrote:
> On 02/04/2010 10:04 PM, François Dumont wrote:
>
>> Thanks, it is a good workaround but I had plan to introduce this
>> function in debug/functions.h:
>>
>> template<typename _Iterator>
>> typename __siter_base<_Iterator>::iterator_type
>> __base(_Iterator __it)
>> { return __siter_base<_Iterator>::__b(__it); }
>>
>> __base is easier to use through out the debug containers. But in this
>> case the __iter_base declaration is not enough.
>>
>> Do you have an other solution or I will be forced to write
>> __siter_base<_InputIterator>::__b(__first) rather than __base(__first)
>> everywhere ?
>>
> I don't, but the above cannot work without an appropriate typedef in
> __iter_base, like (only lightly tested):
>
Yes, I had added one on my side. I had to change _Safe_Iterator
_Base_iterator nested typedef in interator_type for consistency with
other iterator wrapping type that are targetted by the __iter_base struct.
> template<typename _Iterator, bool _HasBase>
> struct __iter_base
> {
> typedef _Iterator iterator_type;
>
> static iterator_type
> __b(_Iterator __it)
> { return __it; }
> };
>
> template<typename _Iterator>
> struct __iter_base<_Iterator, true>
> {
> typedef typename _Iterator::iterator_type iterator_type;
>
> static iterator_type
> __b(_Iterator __it)
> { return __it.base(); }
> };
>
> Paolo.
>
More information about the Libstdc++
mailing list