I think this is one of the tricky things that turns C++ a complex language! The *this object is in fact of type B, even inside a virtual function because the B& operator*(B*) is called. I was using typeid(*this).name() to debug, without knowing it's virtual behavior.
Yes, but why?../libs/boost/include/boost/serialization/export.hpp:134:40: warning: type qualifiers ignored on function return typemain.cpp:83:5: warning: unused parameter ‘argc’main.cpp:83:5: warning: unused parameter ‘argv’Can you reproduce the error in your Boost version?2011/8/5 Robert Ramey <ramey@rrsd.com>
Júlio Hoffimann wrote:That's where it's detected. It's caused somehere else - see below.
> Just correcting another mistake mine, the warning is not on line 40
> as i said. It's in export.hpp 134:40.
>
>
> Do you have any hint Robert? What could i do to fix this? I heard
> Boost.Serialization changed dramatically from 1.45 to actual
> versions. I just don't want to upgrade right now because i'm the
> middle of another job.
>
One obvious problem is that the base class is not abstract. To be abstract,
a base class must have atleast one virtual function in the form
virtual my_function() = 0;
The ASSUME_ABSTRACT macro doesn't mark it abstract to the
compiler - it marks it abstract to the boost type-traites system.
I know it's quirky and unclear - but I see no way to make it bullet proof.
I'm sort of surprised/disappointed that this doesn't give a compile time
warning. What compiler do you use?
Robert Ramey
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users