Compilation Error in Boost::unordered_detail::hash_table on boost 1_46_1

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Compilation Error in Boost::unordered_detail::hash_table on boost 1_46_1

Shinil Gangadharan

Hi,

 

I am using Sun CC v5.9 compiler to compile boost 1_46_1.  We are getting the following error.  Is there a way to get around with this error?

 

 

"/dvobs/a-ThirdParty/Boost/boost_1_46_1/boost/unordered/detail/table.hpp", line 595: Error: Could not find a match for boost::unordered_detail::hash_table<boost::unordered_detail::T>::find(const boost::unordered_detail::Key&, const boost::unordered_detail::Hash&, const boost::unordered_detail::Pred&) const.

"/dvobs/a-ThirdParty/Boost/boost_1_46_1/boost/unordered/detail/table.hpp", line 595: Error: Too many args in template, from boost::unordered_detail::Hash on ignored.

 

Regards,

Shinil V.G.


_______________________________________________
Boost-users mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/boost-users
Reply | Threaded
Open this post in threaded view
|

Re: Compilation Error in Boost::unordered_detail::hash_table on boost 1_46_1

Daniel James-3
On 30 June 2011 12:53, Shinil Gangadharan <[hidden email]> wrote:
>
> I am using Sun CC v5.9 compiler to compile boost 1_46_1.  We are getting the
> following error.  Is there a way to get around with this error?
>
> "/dvobs/a-ThirdParty/Boost/boost_1_46_1/boost/unordered/detail/table.hpp",
> line 595: Error: Too many args in template, from
> boost::unordered_detail::Hash on ignored.

We haven't had a Sun 5.9 tester for some time. So you probably need to
either upgrade to Sun 5.10 or use an older version of boost, 1.41
seems to be the last version that was tested on Sun 5.9.

FWIW The actual problem seems to be caused by use of out of line
template member function of template classes (e.g. 'template<class A>
template<class B> void foo<A>::(B b)'), which earlier versions didn't
use because of poor compiler support.
_______________________________________________
Boost-users mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/boost-users
Reply | Threaded
Open this post in threaded view
|

Re: Compilation Error in Boost::unordered_detail::hash_table on boost 1_46_1

koval
In reply to this post by Shinil Gangadharan
I had the same problem with 1_47_0
Changed boost/unordered/detail/table.hpp file in the following way

                                                   
template <class T>                         
    template <class Key, class Pred>   
    inline BOOST_DEDUCED_TYPENAME hash_table<T>::node_ptr
        hash_table<T>::find_iterator(bucket_ptr bucket, Key const& k,
            Pred const& eq) const


and


template <class T>
    template <class Key, class Hash, class Pred>
    BOOST_DEDUCED_TYPENAME hash_table<T>::iterator_base hash_table<T>::find(Key const& k,
        Hash const& h, Pred const& eq) const


in both cases the return type was taken out of T, after taking it out of hash_table<T> SunCC compiles the code.
Strange enough, non-template versions of both functions work with T::

I used Sun Studio 12 (not the 12.2 update) under Solaris 5.9
I also have access to Sun Studio 12 and update 12.2 on Solaris 5.10 (both sparc/x86)
I use apache stdcxx 4.2.1 (I find it more standard-compliant without using strange macros _STLP_xxxx than STLport and better fitting the compiler - it completely replaces built-in libCstd, even exception and typeinfo headers)