Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost.fusion 1.42 / Gcc 4.5: what is this error trying to tell me? (Works with Gcc 4.4)
From: Joost Kraaijeveld (J.Kraaijeveld_at_[hidden])
Date: 2011-03-06 04:34:58


Hi Joel,

Thanks for replying so quick.

On Sun, 2011-03-06 at 10:05 +0100, Joel Falcou wrote:
> > The error:
> > ../../../library/DanuModelObjectsFactory/UserCreatorFunction.cpp:40:83: instantiated from here
> > /usr/include/boost/fusion/iterator/key_of.hpp:38:9: error: invalid use of incomplete type 'struct boost::fusion::extension::key_of_impl<boost::fusion::non_fusion_tag>'
> > /usr/include/boost/fusion/iterator/key_of.hpp:20:16: error: declaration of 'struct boost::fusion::extension::key_of_impl<boost::fusion::non_fusion_tag>'
> >
> The non_fusion_tag error here says you pass a type which is not a fusion
> sequence to key_of at line 40 of your code.
>
> > ObjectId& objectId = boost::fusion::at_key< UserCreator::objectId>(*arguments);<--!!!!!!!!
> So here check if *arguments is really a fusion sequence.

"arguments" is a pointer to a struct which is publicly derived
boost::fusion::map which is a fusion sequence according to the docs I
believe
(http://www.boost.org/doc/libs/1_42_0/libs/fusion/doc/html/fusion/container/map.html)

Your response however led to an experiment which shows that the error is
in:

ObjectId& objectId = boost::fusion::at_key<UserCreator::objectId>(*arguments)

as the other calls with boost::fusion::at_key (see the last code
snippet) do not result in errors.

Could the fact that the class ObjectId is publicly derived from
std::vector< unsigned char> have anything to do with this?

TIA

-- 
Met vriendelijke groeten,
Joost Kraaijeveld
Askesis B.V.
Molukkenstraat 14
6524NB Nijmegen
tel: 024-3888063 / 06-51855277
fax: 024-3608416
web: www.askesis.nl



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net