Boost logo

Boost :

Subject: Re: [boost] Are you a C++ guru - prove it here !
From: Manfred Doudar (manfred.doudar_at_[hidden])
Date: 2009-01-14 23:38:42


On Wed, 14 Jan 2009 20:02:22 -0800
"Robert Ramey" <ramey_at_[hidden]> wrote:

> I'm having problems with the following code below from
> boost/serialization/export.hpp
>
> compiling
>
> BOOST_CLASS_EXPORT_GUID(final, "final")
>
> results in the following error message on the gcc compilers.
>
> error: too few template-parameter-lists
>
> VC compilers don't complain about this. I've tried replacing
>
> ::boost::archive::detail::init_guid< T >::guid_initializer = \
>
> with
>
> ::boost::archive::detail::init_guid< T >::guid_initializer< T> =\
>
> But this doesn't help. Happy to get help from any C++ guru
>
> Robert Ramey
>
> template<typename T>
> class init_guid {
> static ::boost::archive::detail::guid_initializer<T> const
> & guid_initializer;
> };
> } // namespace detail
> } // namespace archive
> } // namespace boost
>
> #define BOOST_CLASS_EXPORT_GUID(T, K) \
> ::boost::archive::detail::guid_initializer< T > const & \
> ::boost::archive::detail::init_guid< T >::guid_initializer = \
> ::boost::serialization::singleton< \
> ::boost::archive::detail::guid_initializer< T > \
> >::get_mutable_instance().export_guid(K); \
>

#define BOOST_CLASS_EXPORT_GUID(T, K) \
 template <typename T> \
 ::boost::archive::detail::guid_initializer< T > const & \
 ::boost::archive::detail::init_guid< T >::guid_initializer = \
 ::boost::serialization::singleton< \
 ::boost::archive::detail::guid_initializer< T > \
>::get_mutable_instance().export_guid(K);

Simple oversight - you're missing the obvious:

 template <typename T> \

at the beginning of your macro.

Cheers,

-- 
Manfred
15 January, 2009

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