Boost logo

Boost :

From: alnsn_at_[hidden]
Date: 2004-07-10 09:30:03


Alexander Nasonov wrote:
> Arkadiy Vertleyb wrote:
> > Alexander Nasonov <alnsn_at_[hidden]> wrote
> >
> > > My attempt to compile ./libs/typeof/test/main.cpp failed...
> >
> > Could you tell me what exactly the Intel compiler complained about?
> If you surround typename by comments at line 115 in register_functions.hpp
> the compilation will stop only after
> #pragma message("compiling Modifiers example...").
... and only in there saying:
../../../boost/typeof/typeof.hpp(37): error: more than one partial specialization matches the template argument list of class "boost::type_of::encode_type_impl<boost::type_of::encode_type_impl<boost::type_of::detail::push_back<boost::type_of::detail::push_back<boost::mpl::vector0<boost::mpl::void_>, boost::mpl::int_<131093>>::type, boost::mpl::int_<458770>>::type, const int *const>::type, const int [20]>"
            "boost::type_of::encode_type_impl<V, const T>"
            "boost::type_of::encode_type_impl<V, T [N]>"

I'd suggest to use is_array in combination with mpl::if_:

        template<class V, class T> struct encode_type_impl;
        template<class V, class T> struct encode_type_impl_array; // HERE!
        template<class T, class Iter> struct decode_type_impl;

        template<class V, class T> struct encode_type
                : boost::mpl::if_<
              ::boost::is_array<T>,
              encode_type_impl_array<V, T>, // AND HERE!
              encode_type_impl<V, T>
>::type
        {};

Of course, you have to append _array to appropriate specialization of
encode_type_impl.

-- 
Alexander Nasonov

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk