Description
I wanted to switch my code to the versioned save/load/serialize methods, but was having trouble with the namespace included in the following causing issues with the macro:
CEREAL_CLASS_VERSION(MV::Scene::Node, 1);
Because my version of cereal was pretty old I decided to pull and get latest, and I am no longer having issues with the above line, I changed the signature of serialize and load_and_construct from this original state:
template
void serialize(Archive & a_archive)
template
static void load_and_construct(Archive & a_archive, cereal::construct &a_construct)
To this:
template
void serialize(Archive & a_archive, const uint32_t a_version)
template
static void load_and_construct(Archive & a_archive, cereal::construct &a_construct, const uint32_t a_version)
And am now getting the following error which seems to indicate the load_and_construct is no longer actually being detected due to the versioned function signature:
1>C:\git\external\cereal\include\cereal/access.hpp(300): error C2512: 'MV::Scene::Node::Node': no appropriate default constructor available (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/details/traits.hpp(1209): note: see reference to function template instantiation 'T *cereal::access::construct<TT>(void)' being compiled
1> with
1> [
1> T=MV::Scene::Node,
1> TT=MV::Scene::Node
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/details/traits.hpp(1290): note: see reference to class template instantiation 'cereal::traits::is_default_constructible<T>' being compiled
1> with
1> [
1> T=MV::Scene::Node
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/types/memory.hpp(307): note: see reference to class template instantiation 'cereal::detail::Construct<T,Archive,false,false>' being compiled
1> with
1> [
1> T=MV::Scene::Node,
1> Archive=cereal::JSONInputArchive
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(854): note: see reference to function template instantiation 'void cereal::load<AA,MV::Scene::Node>(Archive &,cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &> &)' being compiled
1> with
1> [
1> AA=cereal::JSONInputArchive,
1> Archive=cereal::JSONInputArchive
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(777): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::processImpl<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>,0>(T &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive,
1> T=cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(777): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::processImpl<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>,0>(T &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive,
1> T=cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(680): note: see reference to function template instantiation 'void cereal::InputArchive<cereal::JSONInputArchive,0>::process<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>&>(T)' being compiled
1> with
1> [
1> T=cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &> &
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(680): note: see reference to function template instantiation 'void cereal::InputArchive<cereal::JSONInputArchive,0>::process<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>&>(T)' being compiled
1> with
1> [
1> T=cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &> &
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/archives/json.hpp(858): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::operator ()<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>&>(cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &> &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/archives/json.hpp(858): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::operator ()<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>&>(cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &> &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(854): note: see reference to function template instantiation 'void cereal::load<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>>(cereal::JSONInputArchive &,cereal::NameValuePair<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>> &)' being compiled (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(777): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::processImpl<T,0>(T &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive,
1> T=cereal::NameValuePair<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(777): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::processImpl<T,0>(T &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive,
1> T=cereal::NameValuePair<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(680): note: see reference to function template instantiation 'void cereal::InputArchive<cereal::JSONInputArchive,0>::process<_Ty>(T &&)' being compiled
1> with
1> [
1> _Ty=cereal::NameValuePair<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>>,
1> T=cereal::NameValuePair<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(680): note: see reference to function template instantiation 'void cereal::InputArchive<cereal::JSONInputArchive,0>::process<_Ty>(T &&)' being compiled
1> with
1> [
1> _Ty=cereal::NameValuePair<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>>,
1> T=cereal::NameValuePair<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/types/memory.hpp(189): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::operator ()<cereal::NameValuePair<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>>>(cereal::NameValuePair<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>> &&)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/types/memory.hpp(189): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::operator ()<cereal::NameValuePair<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>>>(cereal::NameValuePair<cereal::memory_detail::PtrWrapper<std::shared_ptr<MV::Scene::Node> &>> &&)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(854): note: see reference to function template instantiation 'void cereal::load<AA,MV::Scene::Node>(Archive &,std::shared_ptr<MV::Scene::Node> &)' being compiled
1> with
1> [
1> AA=cereal::JSONInputArchive,
1> Archive=cereal::JSONInputArchive
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(777): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::processImpl<std::shared_ptr<MV::Scene::Node>,0>(T &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive,
1> T=std::shared_ptr<MV::Scene::Node>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(777): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::processImpl<std::shared_ptr<MV::Scene::Node>,0>(T &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive,
1> T=std::shared_ptr<MV::Scene::Node>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(680): note: see reference to function template instantiation 'void cereal::InputArchive<cereal::JSONInputArchive,0>::process<std::shared_ptr<MV::Scene::Node>&>(T)' being compiled
1> with
1> [
1> T=std::shared_ptr<MV::Scene::Node> &
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(680): note: see reference to function template instantiation 'void cereal::InputArchive<cereal::JSONInputArchive,0>::process<std::shared_ptr<MV::Scene::Node>&>(T)' being compiled
1> with
1> [
1> T=std::shared_ptr<MV::Scene::Node> &
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/archives/json.hpp(858): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::operator ()<std::shared_ptr<MV::Scene::Node>&>(std::shared_ptr<MV::Scene::Node> &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/archives/json.hpp(858): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::operator ()<std::shared_ptr<MV::Scene::Node>&>(std::shared_ptr<MV::Scene::Node> &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(854): note: see reference to function template instantiation 'void cereal::load<std::shared_ptr<MV::Scene::Node>&>(cereal::JSONInputArchive &,cereal::NameValuePair<std::shared_ptr<MV::Scene::Node> &> &)' being compiled (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(777): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::processImpl<T,0>(T &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive,
1> T=cereal::NameValuePair<std::shared_ptr<MV::Scene::Node> &>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(777): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::processImpl<T,0>(T &)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive,
1> T=cereal::NameValuePair<std::shared_ptr<MV::Scene::Node> &>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(680): note: see reference to function template instantiation 'void cereal::InputArchive<cereal::JSONInputArchive,0>::process<_Ty>(T &&)' being compiled
1> with
1> [
1> _Ty=cereal::NameValuePair<std::shared_ptr<MV::Scene::Node> &>,
1> T=cereal::NameValuePair<std::shared_ptr<MV::Scene::Node> &>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> C:\git\external\cereal\include\cereal/cereal.hpp(680): note: see reference to function template instantiation 'void cereal::InputArchive<cereal::JSONInputArchive,0>::process<_Ty>(T &&)' being compiled
1> with
1> [
1> _Ty=cereal::NameValuePair<std::shared_ptr<MV::Scene::Node> &>,
1> T=cereal::NameValuePair<std::shared_ptr<MV::Scene::Node> &>
1> ] (compiling source file Source\DiggerGame\diggerGame.cpp)
1> Source\DiggerGame\diggerGame.cpp(50): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::operator ()<cereal::NameValuePair<std::shared_ptr<MV::Scene::Node> &>>(cereal::NameValuePair<std::shared_ptr<MV::Scene::Node> &> &&)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive
1> ]
1> Source\DiggerGame\diggerGame.cpp(50): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::operator ()<cereal::NameValuePair<std::shared_ptr<MV::Scene::Node> &>>(cereal::NameValuePair<std::shared_ptr<MV::Scene::Node> &> &&)' being compiled
1> with
1> [
1> ArchiveType=cereal::JSONInputArchive
1> ]