Thread overview
associative_selector_iterator
Nov 05, 2008
Manfred Ehrhart
Nov 05, 2008
Matthew Wilson
Nov 05, 2008
Manfred Ehrhart
Nov 06, 2008
Manfred Ehrhart
Nov 10, 2008
Matthew Wilson
Jun 17, 2010
Matt Wilson
November 05, 2008
Hi,
Currently I use v.1.9.44 but the following problem is the same with the
1.9.60 version.
I have not successfully used the associative_selector_iterator (GCC 4.x),
compilation error.

I realize that the associative_selector_iterator declare a typedef with a distance_type for the I template parameter. But libstdc++ iterator does not exhibit such a typedef (accordingly with the stlsoft/util/std/iterator_helpers file). So evidently, my code does not compile. I replace it with a typedef I::difference_type distance_type in the associative_selector_iterator.hpp in order to compile (nevertheless this typedef is not used)

But finally, I also realize that associative_selective_iterator cannot compile if the second type is a pointer. In the select_second struct, the typedef value_type& reference_type cannot compile (reference to pointer). I think something like boost::call_traits allow to deal with reference/pointer trick.

Does it exist a workaround, or perhaps I do not correctly use the associative_selector_iterator.

Thanks you.
Manfred

November 05, 2008
Hi Manfred

I should get chance to check out this problem tomorrow. Can you provide a sample of code that illustrates what you want it to do?
That'd help me a lot

Cheers

Matt

"Manfred Ehrhart" <ehrhart.dev.nospam@free.fr> wrote in message news:geru0l$1qio$1@digitalmars.com...
> Hi,
> Currently I use v.1.9.44 but the following problem is the same with the
> 1.9.60 version.
> I have not successfully used the associative_selector_iterator (GCC 4.x),
> compilation error.
>
> I realize that the associative_selector_iterator declare a typedef with a distance_type for the I template parameter. But libstdc++ iterator does not exhibit such a typedef (accordingly with the stlsoft/util/std/iterator_helpers file). So evidently, my code does not compile. I replace it with a typedef I::difference_type distance_type in the associative_selector_iterator.hpp in order to compile (nevertheless this typedef is not used)
>
> But finally, I also realize that associative_selective_iterator cannot compile if the second type is a pointer. In the select_second struct, the typedef value_type& reference_type cannot compile (reference to pointer). I think something like boost::call_traits allow to deal with reference/pointer trick.
>
> Does it exist a workaround, or perhaps I do not correctly use the associative_selector_iterator.
>
> Thanks you.
> Manfred
>


November 05, 2008
Manfred Ehrhart wrote:

> Hi,
> Currently I use v.1.9.44 but the following problem is the same with the
> 1.9.60 version.
> I have not successfully used the associative_selector_iterator (GCC 4.x),
> compilation error.
> 
> I realize that the associative_selector_iterator declare a typedef with a distance_type for the I template parameter. But libstdc++ iterator does not exhibit such a typedef (accordingly with the stlsoft/util/std/iterator_helpers file). So evidently, my code does not compile. I replace it with a typedef I::difference_type distance_type in the associative_selector_iterator.hpp in order to compile (nevertheless this typedef is not used)
> 

My mistake, .....

> But finally, I also realize that associative_selective_iterator cannot compile if the second type is a pointer. In the select_second struct, the typedef value_type& reference_type cannot compile (reference to pointer). I think something like boost::call_traits allow to deal with reference/pointer trick.
> 
> Does it exist a workaround, or perhaps I do not correctly use the associative_selector_iterator.

Indeed, I make a big mistake. I used stlsoft::select_second instead of
stlsoft::select_const_second. The gcc error message was not as clear as I
expected. My apologies.
Manfred
November 06, 2008
Manfred Ehrhart wrote:

> Manfred Ehrhart wrote:
> 
>> Hi,
>> Currently I use v.1.9.44 but the following problem is the same with the
>> 1.9.60 version.
>> I have not successfully used the associative_selector_iterator (GCC 4.x),
>> compilation error.
>> 
>> I realize that the associative_selector_iterator declare a typedef with a distance_type for the I template parameter. But libstdc++ iterator does not exhibit such a typedef (accordingly with the stlsoft/util/std/iterator_helpers file). So evidently, my code does not compile. I replace it with a typedef I::difference_type distance_type in the associative_selector_iterator.hpp in order to compile (nevertheless this typedef is not used)
>> 
> 
> My mistake, .....
> 
>> But finally, I also realize that associative_selective_iterator cannot compile if the second type is a pointer. In the select_second struct, the typedef value_type& reference_type cannot compile (reference to pointer). I think something like boost::call_traits allow to deal with reference/pointer trick.
>> 
>> Does it exist a workaround, or perhaps I do not correctly use the associative_selector_iterator.
> 
> Indeed, I make a big mistake. I used stlsoft::select_second instead of
> stlsoft::select_const_second. The gcc error message was not as clear as I
> expected. My apologies.
> Manfred

Finally, I think there is a small couple of problem.
- the libstdc++ iterator::distance_type does not exist
- The select_second cannot be compiled (but the select_second_const is ok)

I changed a 1.9.44 based file and I post a snippet of code.
Thanks.
Manfred

November 10, 2008
Thanks Manfred

I'm still working out what to do with these components. I think I'd like to do a comprehensive fix, and include them in a 1.10 alpha
release, but that's going to take a week or so, as my plate is pretty full at the moment.

Thanks again

Matt

"Manfred Ehrhart" <ehrhart.dev.nospam@free.fr> wrote in message news:gev3fk$2beg$1@digitalmars.com...
> Manfred Ehrhart wrote:
>
> > Manfred Ehrhart wrote:
> >
> >> Hi,
> >> Currently I use v.1.9.44 but the following problem is the same with the
> >> 1.9.60 version.
> >> I have not successfully used the associative_selector_iterator (GCC 4.x),
> >> compilation error.
> >>
> >> I realize that the associative_selector_iterator declare a typedef with a distance_type for the I template parameter. But libstdc++ iterator does not exhibit such a typedef (accordingly with the stlsoft/util/std/iterator_helpers file). So evidently, my code does not compile. I replace it with a typedef I::difference_type distance_type in the associative_selector_iterator.hpp in order to compile (nevertheless this typedef is not used)
> >>
> >
> > My mistake, .....
> >
> >> But finally, I also realize that associative_selective_iterator cannot compile if the second type is a pointer. In the select_second struct, the typedef value_type& reference_type cannot compile (reference to pointer). I think something like boost::call_traits allow to deal with reference/pointer trick.
> >>
> >> Does it exist a workaround, or perhaps I do not correctly use the associative_selector_iterator.
> >
> > Indeed, I make a big mistake. I used stlsoft::select_second instead of
> > stlsoft::select_const_second. The gcc error message was not as clear as I
> > expected. My apologies.
> > Manfred
>
> Finally, I think there is a small couple of problem.
> - the libstdc++ iterator::distance_type does not exist
> - The select_second cannot be compiled (but the select_second_const is ok)
>
> I changed a 1.9.44 based file and I post a snippet of code.
> Thanks.
> Manfred


June 17, 2010
Manfred

I must apologise for having taken so long to address this issue. I have now incorporated your changes, along with a few other minor mods and the removal of explicit from the ctor, and they will appear in the next release, which I'm hoping will be this weekend.

I've also incorporated your test program into a new scratch test and the existing unit test, both of which will appear in the next alpha release of STLSoft 1.10, which I'm again hoping to release this weekend.

With thanks

Matt

"Manfred Ehrhart" <ehrhart.dev.nospam@free.fr> wrote in message news:gev3fk$2beg$1@digitalmars.com...
> Manfred Ehrhart wrote:
>
>> Manfred Ehrhart wrote:
>>
>>> Hi,
>>> Currently I use v.1.9.44 but the following problem is the same with the
>>> 1.9.60 version.
>>> I have not successfully used the associative_selector_iterator (GCC
>>> 4.x),
>>> compilation error.
>>>
>>> I realize that the associative_selector_iterator declare a typedef with
>>> a
>>> distance_type for the I template parameter. But libstdc++ iterator does
>>> not exhibit such a typedef (accordingly with the
>>> stlsoft/util/std/iterator_helpers file). So evidently, my code does not
>>> compile. I replace it with a typedef I::difference_type distance_type in
>>> the associative_selector_iterator.hpp in order to compile (nevertheless
>>> this typedef is not used)
>>>
>>
>> My mistake, .....
>>
>>> But finally, I also realize that associative_selective_iterator cannot
>>> compile if the second type is a pointer. In the select_second struct,
>>> the
>>> typedef value_type& reference_type cannot compile (reference to
>>> pointer).
>>> I think something like boost::call_traits allow to deal with
>>> reference/pointer trick.
>>>
>>> Does it exist a workaround, or perhaps I do not correctly use the associative_selector_iterator.
>>
>> Indeed, I make a big mistake. I used stlsoft::select_second instead of
>> stlsoft::select_const_second. The gcc error message was not as clear as I
>> expected. My apologies.
>> Manfred
>
> Finally, I think there is a small couple of problem.
> - the libstdc++ iterator::distance_type does not exist
> - The select_second cannot be compiled (but the select_second_const is ok)
>
> I changed a 1.9.44 based file and I post a snippet of code.
> Thanks.
> Manfred