
<Oliver.Kowalke@qimonda.com> wrote
I could solve the problem with gcc-4.1.2. In file expression_registry.hpp the tags
struct key_index_tag; struct iterator_index_tag; struct cache_tag; struct cover_tag;
Are forward declared. The class expression_registry_traverse_functor uses this tags as type switches for the function operator
template<class R> void operator()(R& r, key_index_tag tag) const; template<class R> void operator()(R& r, iterator_index_tag tag) const; template<class R> void operator()(R& r, cache_tag tag) const; template<class R> void operator()(R& r, cover_tag tag) const;
Because the tags are forward declared the compiler doen't know the complete type. I change your implemention with passing the tags as const&. Then the gcc-4.1.2 accepts now the code.
template<class R> void operator()(R& r, key_index_tag const& tag) const; template<class R> void operator()(R& r, iterator_index_tag const& tag) const; template<class R> void operator()(R& r, cache_tag const& tag) const; template<class R> void operator()(R& r, cover_tag const&) const;
Thanks Oliver. Actually this problem has already been solved some time ago (and exactly in the way you suggest) in SourceForge CVS, see http://rel-temp-lib.cvs.sourceforge.net/rel-temp-lib/, but I just forgot to upload the corrected copy to the file vault. I'll do this as soon as I can. Regards, Arkadiy