Removed WrapperBase and added ElideMinimal instead, which is a trait that is checked by
text archives performing minimal serialization to see if they should go ahead and skip creating various nodes
and naming things. Currently only used on base_class and virtual_base_class
This is a solution for #46 that uses RTTI to allow get_user_data to work
and throw an error when used in an archive that doesn't actually have user
data. Unfortunately this is a run-time check and uses a dummy virtual function
that is never actually called (so the overhead of this will be very low, a few bytes
for the vtable, no runtime cost).
Another solution I'm going to play around with involves re-arranging some templates and
typedefs.
Archives that output text (human readable to some extent) should now derive from the type traits class
cereal::traits::TextArchive.
Testing for this can be done with cereal::traits::is_text_archive
Relates to #80
In sandbox_vs.cpp, there is a very strange issue with calling
traits::is_input_serializable that causes icc 15.0.0 to crash.
Everything else works great though.
Decided to go with the simple ifndef solution since the template
acrobatics to disable things just for MSVC would not ahve been worth it
Tried to add ARM build for MSVC but this turns out to be hard to do without
making a windows store/phone app, which requirse an active dev license
Added a set of trait classes that can be used to get an input archive
from an output archive. Requires specializing a struct for each direction or
alternatively using the new macro CEREAL_SETUP_ARCHIVE_TRAITS(InArchive, OutArchive).
This has already been added for all built in archive types. This is currently only
used for minimal serialization.
load_minimal type traits now correctly use the output archive to check the existence of
a corresponding save_minimal and get its return type, using the new get_input_from_output
type class.
Added a test for this case into the minimal structs test.
Sandbox_vs needed the new macro to become compliant.