Newer versions of libc++ has dropped supporting this usecase since its
an UB see.
https://reviews.llvm.org/D114920?id=400571
Fixes
uniform_int_distribution.h:162:5: error: static assertion failed due to requirement '__libcpp_random_is_valid_inttype<char>::value': IntType must be a supported integer type
static_assert(__libcpp_random_is_valid_inttype<_IntType>::value, "IntType must be a supported integer type");
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/libcereal/1.3.2+gitAUTOINC+ebef1e9298-r0/git/sandbox/performance.cpp:261:9: note: in instantiation of template class 'std::uniform_int_distribution<char>' requested here
c = std::uniform_int_distribution<char>(' ', '~')(gen);
^
/mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/libcereal/1.3.2+gitAUTOINC+ebef1e9298-r0/git/sandbox/performance.cpp:261:9: error: type 'std::uniform_int_distribution<char>' does not provide a call operator
c = std::uniform_int_distribution<char>(' ', '~')(gen);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 errors generated.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
* cleanup cmake files to be a little more moderen
keep the source tree free of build artifacts
cmakelint the cmake files too
* fix cmake setup errors on CI
fix APPLE clang builds too
* CI needs support for realy history cmake V3.6
fix typo in cmake files using add_test() commnds
* One step more to use modern cmake
Prevent to modifiy compile and linker FLAGS and to set global includes
pathes
* fix CI build problems with older cmake versions
prepare cleanup cmake list file
* final cleanup
use Config.cmake.in and install hole cmake config files
* Fix cpp17 PORTABILITY_TEST linker problem
add missed target_link_libraries()
* hopefully prevent windows test problems
Updated and made changes necessary for the new version of rapidjson.
Looks good on ubuntu under the compilers I can test with, needs MSVC testing.
We had some internal changes to rapidjson but these didn't seem necessary with
the new version. Haven't done any performance testing, initial estimates put it at
nearly the same speed for json serialization. Could probably optimize things.
relates #82, #121
Also some changes to make sandbox things work with the new casting
Made it so base_class doesn't need to know about polymorphism to work
All relates to #188
count_in/out_serializers will now count the number of specializations if a type is
specialized, otherwise it will count the number of non-specialized serialization functions.
as a result of this, is_output/input_serializable now works as you would expect from the name
and will return true for correctly configured specialized types too.
this caused some logic changes to need to happen in cereal.hpp, mostly within the PROCESS_IF macro.
added some tests related to this change and #180fixes#180
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.
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.
longs should now properly serialize under 32 or 64 bit machines.
long long, unsigned long long, and long double now serialize as base10
strings instead of base64.
see issue #72