Hello,
I upgraded the boost library in my workstation from boost
1.33.1 to boost 1.36.0. When I compiled my program, I got following
errors,
/usr/include/boost/detail/sp_counted_impl.hpp:192:
error: template argument 3 is invalid
/usr/include/boost/detail/sp_counted_impl.hpp:198:
error: 'a' has not been declared
/usr/include/boost/detail/sp_counted_impl.hpp:
In constructor 'boost::detail::sp_counted_impl_pda<P, D,
<template-parameter-1-3> >::sp_counted_impl_pda(P, D, int)':
/usr/include/boost/detail/sp_counted_impl.hpp:198:
error: 'a' was not declared in this scope
/usr/include/boost/detail/sp_counted_impl.hpp:
In member function 'virtual void boost::detail::sp_counted_impl_pda<P, D,
<template-parameter-1-3> >::destroy()':
/usr/include/boost/detail/sp_counted_impl.hpp:209:
error: expected nested-name-specifier before 'template'
/usr/include/boost/detail/sp_counted_impl.hpp:209:
error: expected unqualified-id before 'template'
/usr/include/boost/detail/sp_counted_impl.hpp:211:
error: 'A2' was not declared in this scope
/usr/include/boost/detail/sp_counted_impl.hpp:211:
error: expected `;' before 'a2'
/usr/include/boost/detail/sp_counted_impl.hpp:214:
error: 'a2' was not declared in this scope
I’m using gcc 4.1.2.
Below is the file sp_counted_impl.hpp line 181 ~ 221,
template<class P, class D, class A> class
sp_counted_impl_pda: public sp_counted_base
{
private:
P p_; // copy constructor must not throw
D d_; // copy constructor must not throw
A a_; // copy constructor must not throw
sp_counted_impl_pda( sp_counted_impl_pda
const & );
sp_counted_impl_pda & operator= (
sp_counted_impl_pda const & );
typedef sp_counted_impl_pda<P, D,
A> this_type;
//This is the line 192
public:
// pre: d( p ) must not throw
sp_counted_impl_pda( P p, D d, A a ): p_(
p ), d_( d ), a_( a )
{
}
virtual void dispose() // nothrow
{
d_( p_ );
}
virtual void destroy() // nothrow
{
typedef typename
A::template rebind< this_type >::other A2;
A2 a2( a_ );
this->~this_type();
a2.deallocate(
this, 1 );
}
virtual void * get_deleter(
detail::sp_typeinfo const & ti )
{
return ti ==
BOOST_SP_TYPEID( D )? &reinterpret_cast<char&>( d_ ): 0;
}
};
Please help to see how to resolve these errors.
Best regards,
Hua