
Vladimir Prus wrote:
"all #includes from the boost/archive directory should preceed all #includes from the serialization directory."
This rule means that I can't include <boost/serialization/base_object.hpp> in my headers, and then in my cpp file first include my headers and then archive headers. And I do want to include my header first in .cpp, in order to detect any missing includes in the header itself.
I don't really understand this.
No, even with the mandated order of includes, I still run into the problem.
Send me a small example.
How? Clearly, if I include base_object.hpp in a header, I cannot obey the above rule. Ok leaving just:
#include <boost/serialization/access.hpp> #include <boost/serialization/split_member.hpp> #include <boost/serialization/base_object.hpp>
This is what I recommend. I envision that each class module describe its serialization independently of any particular archive. So I wouldn't expect any *archive headers to be found in any class module. If this is the case, the *archive.hpp first, *serialization.hpp second is very easy to implement. Note that this is a reflection of one of the fundamental principles of the serialization system - that serialization of classes should be defined independently of any particular archive.
in my header, and using the mandated includes order in .cpp file, I still get the same error.
What should we do next?
Send me the example. I would be happy to review it. Robert Ramey