
On 3/7/06, JOAQUIN LOPEZ MU?Z <joaquin@tid.es> wrote:
----- Mensaje original ----- De: Felipe Magno de Almeida <felipe.m.almeida@gmail.com> Fecha: Martes, Marzo 7, 2006 6:34 pm Asunto: Re: [boost][multi_index] boost/boost/multi_index/detail/index_base.hpp:49:error
On 3/6/06, Joaquín Mª López Muñoz <joaquin@tid.es> wrote:
[snip]
typedef std::pair<iterator, iterator> iterator_pair;
Here. What is this "iterator" type? What index.equal_range(name) returns is a
typedef headers_multi_index_t::nth_index<1>::type::iterator iterator;
[...]
Looks like that's not the problem
Yep, looks like this is OK, and, as you say, the thing works on other compilers. The following is a shot in the dark. Can replace your
typedef headers_multi_index_t::nth_index<1>::type::iterator iterator;
with something like
typedef headers_multi_index_t::nth_index<1>::type::iterator my_iterator; // note, name changed
adjust the dependent typedefs and try to compile? Older versions of GCC have sometimes clashing symbol problems with symbols that ought not to clash. Additionally, I'd check the using decls and directives in effect.
If this does not shed any light, it'd be extremely helpful if you can isolate the problem into a complete testcase you can post or send to me. I've tried myself to reproduce the issue following your general code outline, but didn't get the compiler to choke as you have reported.
changing to my_iterator didnt worked too... So created a case smaller case where it fails to compile (now on gcc-4.1 and gcc-3.4.4). I'm sending you the error message and the source file. It compiles cleanly on VC7.1. The gcc seems to complain that equal_range in ordered_index isnt acessible, which doesnt seem to be the case...
Joaquín M López Muñoz Telefónica, Investigación y Desarrollo
Thank you very much for your help. -- Felipe Magno de Almeida