What happened with RTL (Relational Template Library)

Hi, I saw RTL from Dmitriy Arapov and Arkadiy Vertleyb in teh Vault but it seams not to reviewed yet?! Regards, Oliver

<Oliver.Kowalke@qimonda.com> wrote in message
I saw RTL from Dmitriy Arapov and Arkadiy Vertleyb in teh Vault but it seams not to reviewed yet?!
We never submitted it for review.
If I try to compile the example (EarthCoord) I get following errors:
I'll take alook at this. Regards, Arkadiy

Hi Arkadiy,
<Oliver.Kowalke@qimonda.com> wrote in message
If I try to compile the example (EarthCoord) I get following errors:
I'll take alook at this.
I compiled the example (I've had to add #include <boost/rtl/list.hpp> in the main.cpp because breakable_for_each was missing) with gcc-3.4.6 and it works. If I try to compile the same code with gcc-4.1.2 I get the errors as described in my prevoud email. Hopefully you can get it compiling on gcc-4.1.2. With regards, Oliver PS: the errors with gcc-4.1.2 /opt/boost/include/boost-1_33_1/boost/rtl/expression_registry.hpp:122: error: '<anonymous>' has incomplete type /opt/boost/include/boost-1_33_1/boost/rtl/expression_registry.hpp:99: error: forward declaration of 'struct boost::rel::cover_tag' /opt/boost/include/boost-1_33_1/boost/rtl/expression_registry.hpp: In member function 'void boost::rel::expression_registry_traverse_functor::operator()(R&, boost::rel::key_index_tag) const': /opt/boost/include/boost-1_33_1/boost/rtl/expression_registry.hpp:184: error: 'tag' has incomplete type /opt/boost/include/boost-1_33_1/boost/rtl/expression_registry.hpp:96: error: forward declaration of 'struct boost::rel::key_index_tag' /opt/boost/include/boost-1_33_1/boost/rtl/expression_registry.hpp: In member function 'void boost::rel::expression_registry_traverse_functor::operator()(R&, boost::rel::cache_tag) const': /opt/boost/include/boost-1_33_1/boost/rtl/expression_registry.hpp:196: error: 'tag' has incomplete type /opt/boost/include/boost-1_33_1/boost/rtl/expression_registry.hpp:98: error: forward declaration of 'struct boost::rel::cache_tag' make[2]: *** [test_rtl.o] Interrupt

Hello Arkadiy, 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; With regards, Oliver
<Oliver.Kowalke@qimonda.com> wrote in message
I saw RTL from Dmitriy Arapov and Arkadiy Vertleyb in teh Vault but it seams not to reviewed yet?!
We never submitted it for review.
If I try to compile the example (EarthCoord) I get following errors:
I'll take alook at this.
Regards, Arkadiy
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

<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

"Arkadiy Vertleyb" <vertleyb@hotmail.com> wrote
<Oliver.Kowalke@qimonda.com> wrote
I could solve the problem with gcc-4.1.2.
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.
Done -- the latest version of RTL has been uploaded to the file vault. Regards, Arkadiy
participants (2)
-
Arkadiy Vertleyb
-
Oliver.Kowalke@qimonda.com