【发布时间】:2020-10-12 21:38:35
【问题描述】:
我是 boost 和 boost 序列化的新手。我正在尝试反序列化 STL 映射类成员。这是代码 :
...
class Face
{
friend std::ostream & operator<<(std::ostream &os, const Face &mf);
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int /* file_version */){
ar & mFaceID;
}
public:
size_t mFaceID; /*!< an integer value represents the Face Identification number */
void setFaceId(const size_t& faceID)
{
mFaceID = faceID;
}
};
std::ostream & operator<<(std::ostream &os, const Face &mf)
{
return os << ' ' << (size_t) mf.mFaceID << ' ';
}
Point 是下面定义的派生类的成员。
...
class Point
{
friend class boost::serialization::access;
friend std::ostream & operator<<(std::ostream &os, const Point &p);
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
// save/load base class information
ar & X & Y & Z;
}
public:
double X, Y, Z;
Point(double X, double Y, double Z)
: X(X), Y(Y), Z(Z)
{}
};
Face 的派生类
...
class Bend : public Face
{
friend class boost::serialization::access;
friend std::ostream & operator<<(std::ostream &os, const Bend &br);
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
// save/load base class information
ar & boost::serialization::base_object<Face>(*this);
ar & mBendAngle & mBendDirection;
ar & bendLinePnt & bendLineDir;
}
public:
double mBendAngle;
size_t mBendDirection;
Point bendLinePnt, bendLineDir;
Bend(const size_t& faceID, double angle, size_t b_dir, Point pnt, Point dir);
};
std::ostream & operator<<(std::ostream &os, const Bend &mb)
{
os << mb.mBendAngle << " " << mb.mBendDirection << " " << mb.bendLinePnt.X << " " << mb.bendLinePnt.Y << " " << mb.bendLinePnt.Z;
os << mb.bendLineDir.X << " " << mb.bendLineDir.Y << " " << mb.bendLineDir.Z;
os << '\n';
return os;
}
Bend::Bend(const size_t& faceID, double angle, size_t b_dir, Point pnt, Point dir)
: mBendAngle(angle), mBendDirection(b_dir), bendLinePnt(pnt), bendLineDir(dir)
{
setFaceId(faceID);
}
这个类包含我想反序列化的地图:
...
class Model
{
friend class boost::serialization::access;
friend std::ostream & operator<<(std::ostream &os, const Model &m);
template<class Archive>
void serialize(Archive &ar, Bend& bend, const unsigned int version)
{
ar & bends;
}
public:
std::map<const size_t, Bend> bends; // THIS IS THE MAP
void addBend(const Bend& bend);
void init();
};
std::ostream & operator<<(std::ostream &os, const Model &m)
{
for(auto it = m.bends.begin(); it != m.bends.end(); it++){
os << it->first << it->second;
}
return os;
}
void Model::addBend(const Bend& bend)
{
bends.insert({bend.mFaceID, bend});
}
void Model::init()
{
size_t faceID = 1;
size_t dir = 0;
Bend b1(faceID, 90, dir, Point(2, 4, 5), Point(3,5,6));
addBend(b1);
++faceID;
Bend b2(faceID, 90, dir + 1, Point(2, 4, 5), Point(3,5,6));
addBend(b2);
++faceID;
Bend b3(faceID, 90, dir, Point(2, 4, 5), Point(3,5,6));
addBend(b3);
++faceID;
Bend b4(faceID, 90, dir + 1, Point(2, 4, 5), Point(3,5,6));
addBend(b4);
}
类用法:
#include "model.h"
void save(const Model &m, const char * filename)
{
std::ofstream ofs(filename);
boost::archive::text_oarchive oa(ofs);
oa << m;
}
void restore(Model &m, const char * filename)
{
// open the archive
std::ifstream ifs(filename);
boost::archive::text_iarchive ia(ifs);
// restore the model from the archive
ia >> m;
}
int main(int argc, char const *argv[])
{
auto test = std::make_unique<Model>();
test->init();
save(*test, "text_file.txt");
auto test2 = std::make_unique<Model>();
restore(*test2, "text_file.txt");
return 0;
}
序列化过程有效 好的,我需要有关 restore() 函数的帮助或改进我的代码。当我运行代码时,我会得到一长串错误,例如:
In file included from /usr/include/boost/serialization/extended_type_info_typeid.hpp:37,
from /usr/include/boost/archive/detail/iserializer.hpp:45,
from /usr/include/boost/archive/detail/interface_iarchive.hpp:22,
from /usr/include/boost/archive/detail/common_iarchive.hpp:23,
from /usr/include/boost/archive/basic_text_iarchive.hpp:30,
from /usr/include/boost/archive/text_iarchive.hpp:24,
from face.h:9,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/boost/serialization/access.hpp: In instantiation of ‘static void boost::serialization::access::construct(T*) [with T = std::pair<const long unsigned int, Bend>]’:
/usr/include/boost/serialization/serialization.hpp:92:22: required from ‘void boost::serialization::load_construct_data(Archive&, T*, unsigned int) [with Archive = boost::archive::text_iarchive; T = std::pair<const long unsigned int, Bend>]’
/usr/include/boost/serialization/serialization.hpp:148:24: required from ‘void boost::serialization::load_construct_data_adl(Archive&, T*, unsigned int) [with Archive = boost::archive::text_iarchive; T = std::pair<const long unsigned int, Bend>]’
/usr/include/boost/serialization/detail/stack_constructor.hpp:51:54: required from ‘boost::serialization::detail::stack_construct<Archive, T>::stack_construct(Archive&, unsigned int) [with Archive = boost::archive::text_iarchive; T = std::pair<const long unsigned int, Bend>]’
/usr/include/boost/serialization/map.hpp:60:48: required from ‘void boost::serialization::load_map_collection(Archive&, Container&) [with Archive = boost::archive::text_iarchive; Container = std::map<const long unsigned int, Bend>]’
/usr/include/boost/serialization/map.hpp:89:24: required from ‘void boost::serialization::load(Archive&, std::map<Key, Type, Compare, Allocator>&, unsigned int) [with Archive = boost::archive::text_iarchive; Type = Bend; Key = const long unsigned int; Compare = std::less<const long unsigned int>; Allocator = std::allocator<std::pair<const long unsigned int, Bend> >]’
/usr/include/boost/serialization/split_free.hpp:58:13: [ skipping 22 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/boost/archive/detail/iserializer.hpp:626:18: required from ‘void boost::archive::load(Archive&, T&) [with Archive = boost::archive::text_iarchive; T = Model]’
/usr/include/boost/archive/detail/common_iarchive.hpp:67:22: required from ‘void boost::archive::detail::common_iarchive<Archive>::load_override(T&) [with T = Model; Archive = boost::archive::text_iarchive]’
/usr/include/boost/archive/basic_text_iarchive.hpp:70:9: required from ‘void boost::archive::basic_text_iarchive<Archive>::load_override(T&) [with T = Model; Archive = boost::archive::text_iarchive]’
/usr/include/boost/archive/text_iarchive.hpp:82:52: required from ‘void boost::archive::text_iarchive_impl<Archive>::load_override(T&) [with T = Model; Archive = boost::archive::text_iarchive]’
/usr/include/boost/archive/detail/interface_iarchive.hpp:68:9: required from ‘Archive& boost::archive::detail::interface_iarchive<Archive>::operator>>(T&) [with T = Model; Archive = boost::archive::text_iarchive]’
main.cpp:17:11: required from here
/usr/include/boost/serialization/access.hpp:130:9: error: no matching function for call to ‘std::pair<const long unsigned int, Bend>::pair()’
::new(t)T;
^~~~~~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/string:40,
from /usr/include/c++/8/bits/locale_classes.h:40,
from /usr/include/c++/8/bits/ios_base.h:41,
from /usr/include/c++/8/iomanip:40,
from face.h:2,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/c++/8/bits/stl_pair.h:436:9: note: candidate: ‘template<class ... _Args1, long unsigned int ..._Indexes1, class ... _Args2, long unsigned int ..._Indexes2> std::pair<_T1, _T2>::pair(std::tuple<_Args1 ...>&, std::tuple<_Args2 ...>&, std::_Index_tuple<_Indexes1 ...>, std::_Index_tuple<_Indexes2 ...>)’
pair(tuple<_Args1...>&, tuple<_Args2...>&,
^~~~
/usr/include/c++/8/bits/stl_pair.h:436:9: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/serialization/extended_type_info_typeid.hpp:37,
from /usr/include/boost/archive/detail/iserializer.hpp:45,
from /usr/include/boost/archive/detail/interface_iarchive.hpp:22,
from /usr/include/boost/archive/detail/common_iarchive.hpp:23,
from /usr/include/boost/archive/basic_text_iarchive.hpp:30,
from /usr/include/boost/archive/text_iarchive.hpp:24,
from face.h:9,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/boost/serialization/access.hpp:130:9: note: candidate expects 4 arguments, 0 provided
::new(t)T;
^~~~~~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/string:40,
from /usr/include/c++/8/bits/locale_classes.h:40,
from /usr/include/c++/8/bits/ios_base.h:41,
from /usr/include/c++/8/iomanip:40,
from face.h:2,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/c++/8/bits/stl_pair.h:375:9: note: candidate: ‘template<class ... _Args1, class ... _Args2> std::pair<_T1, _T2>::pair(std::piecewise_construct_t, std::tuple<_Args1 ...>, std::tuple<_Args2 ...>)’
pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>);
^~~~
/usr/include/c++/8/bits/stl_pair.h:360:12: note: candidate: ‘template<class _U1, class _U2, typename std::enable_if<(std::_PCC<((! std::is_same<const long unsigned int, _U1>::value) || (! std::is_same<Bend, _U2>::value)), const long unsigned int, Bend>::_MoveConstructiblePair<_U1, _U2>() && std::_PCC<((! std::is_same<const long unsigned int, _U1>::value) || (! std::is_same<Bend, _U2>::value)), const long unsigned int, Bend>::_ImplicitlyMoveConvertiblePair<_U1, _U2>()), bool>::type <anonymous> > constexpr std::pair<_T1, _T2>::pair(std::pair<_U1, _U2>&&)’
constexpr pair(pair<_U1, _U2>&& __p)
^~~~
/usr/include/c++/8/bits/stl_pair.h:360:12: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/serialization/extended_type_info_typeid.hpp:37,
from /usr/include/boost/archive/detail/iserializer.hpp:45,
from /usr/include/boost/archive/detail/interface_iarchive.hpp:22,
from /usr/include/boost/archive/detail/common_iarchive.hpp:23,
from /usr/include/boost/archive/basic_text_iarchive.hpp:30,
from /usr/include/boost/archive/text_iarchive.hpp:24,
from face.h:9,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/boost/serialization/access.hpp:130:9: note: candidate expects 1 argument, 0 provided
::new(t)T;
^~~~~~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/string:40,
from /usr/include/c++/8/bits/locale_classes.h:40,
from /usr/include/c++/8/bits/ios_base.h:41,
from /usr/include/c++/8/iomanip:40,
from face.h:2,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/c++/8/bits/stl_pair.h:350:21: note: candidate: ‘template<class _U1, class _U2, typename std::enable_if<(_MoveConstructiblePair<_U1, _U2>() && (! _ImplicitlyMoveConvertiblePair<_U1, _U2>())), bool>::type <anonymous> > constexpr std::pair<_T1, _T2>::pair(_U1&&, _U2&&)’
explicit constexpr pair(_U1&& __x, _U2&& __y)
^~~~
/usr/include/c++/8/bits/stl_pair.h:350:21: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/serialization/extended_type_info_typeid.hpp:37,
from /usr/include/boost/archive/detail/iserializer.hpp:45,
from /usr/include/boost/archive/detail/interface_iarchive.hpp:22,
from /usr/include/boost/archive/detail/common_iarchive.hpp:23,
from /usr/include/boost/archive/basic_text_iarchive.hpp:30,
from /usr/include/boost/archive/text_iarchive.hpp:24,
from face.h:9,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/boost/serialization/access.hpp:130:9: note: candidate expects 2 arguments, 0 provided
::new(t)T;
^~~~~~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/string:40,
from /usr/include/c++/8/bits/locale_classes.h:40,
from /usr/include/c++/8/bits/ios_base.h:41,
from /usr/include/c++/8/iomanip:40,
from face.h:2,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/c++/8/bits/stl_pair.h:341:12: note: candidate: ‘template<class _U1, class _U2, typename std::enable_if<(_MoveConstructiblePair<_U1, _U2>() && _ImplicitlyMoveConvertiblePair<_U1, _U2>()), bool>::type <anonymous> > constexpr std::pair<_T1, _T2>::pair(_U1&&, _U2&&)’
constexpr pair(_U1&& __x, _U2&& __y)
^~~~~~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/string:40,
from /usr/include/c++/8/bits/locale_classes.h:40,
from /usr/include/c++/8/bits/ios_base.h:41,
from /usr/include/c++/8/iomanip:40,
from face.h:2,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/c++/8/bits/stl_pair.h:332:17: note: candidate: ‘template<class _U2, typename std::enable_if<_CopyMovePair<false, const long unsigned int, _U2>(), bool>::type <anonymous> > std::pair<_T1, _T2>::pair(const _T1&, _U2&&)’
explicit pair(const _T1& __x, _U2&& __y)
^~~~
/usr/include/c++/8/bits/stl_pair.h:332:17: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/serialization/extended_type_info_typeid.hpp:37,
from /usr/include/boost/archive/detail/iserializer.hpp:45,
from /usr/include/boost/archive/detail/interface_iarchive.hpp:22,
from /usr/include/boost/archive/detail/common_iarchive.hpp:23,
from /usr/include/boost/archive/basic_text_iarchive.hpp:30,
from /usr/include/boost/archive/text_iarchive.hpp:24,
from face.h:9,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/boost/serialization/access.hpp:130:9: note: candidate expects 2 arguments, 0 provided
::new(t)T;
^~~~~~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/string:40,
from /usr/include/c++/8/bits/locale_classes.h:40,
from /usr/include/c++/8/bits/ios_base.h:41,
from /usr/include/c++/8/iomanip:40,
from face.h:2,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/c++/8/bits/stl_pair.h:325:18: note: candidate: ‘template<class _U2, typename std::enable_if<_CopyMovePair<true, const long unsigned int, _U2>(), bool>::type <anonymous> > constexpr std::pair<_T1, _T2>::pair(const _T1&, _U2&&)’
constexpr pair(const _T1& __x, _U2&& __y)
^~~~
/usr/include/c++/8/bits/stl_pair.h:325:18: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/serialization/extended_type_info_typeid.hpp:37,
from /usr/include/boost/archive/detail/iserializer.hpp:45,
from /usr/include/boost/archive/detail/interface_iarchive.hpp:22,
from /usr/include/boost/archive/detail/common_iarchive.hpp:23,
from /usr/include/boost/archive/basic_text_iarchive.hpp:30,
from /usr/include/boost/archive/text_iarchive.hpp:24,
from face.h:9,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/boost/serialization/access.hpp:130:9: note: candidate expects 2 arguments, 0 provided
::new(t)T;
^~~~~~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/string:40,
from /usr/include/c++/8/bits/locale_classes.h:40,
from /usr/include/c++/8/bits/ios_base.h:41,
from /usr/include/c++/8/iomanip:40,
from face.h:2,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/c++/8/bits/stl_pair.h:318:27: note: candidate: ‘template<class _U1, typename std::enable_if<_MoveCopyPair<false, _U1, Bend>(), bool>::type <anonymous> > constexpr std::pair<_T1, _T2>::pair(_U1&&, const _T2&)’
explicit constexpr pair(_U1&& __x, const _T2& __y)
^~~~
/usr/include/c++/8/bits/stl_pair.h:318:27: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/serialization/extended_type_info_typeid.hpp:37,
from /usr/include/boost/archive/detail/iserializer.hpp:45,
from /usr/include/boost/archive/detail/interface_iarchive.hpp:22,
from /usr/include/boost/archive/detail/common_iarchive.hpp:23,
from /usr/include/boost/archive/basic_text_iarchive.hpp:30,
from /usr/include/boost/archive/text_iarchive.hpp:24,
from face.h:9,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/boost/serialization/access.hpp:130:9: note: candidate expects 2 arguments, 0 provided
::new(t)T;
^~~~~~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/string:40,
from /usr/include/c++/8/bits/locale_classes.h:40,
from /usr/include/c++/8/bits/ios_base.h:41,
from /usr/include/c++/8/iomanip:40,
from face.h:2,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/c++/8/bits/stl_pair.h:311:18: note: candidate: ‘template<class _U1, typename std::enable_if<_MoveCopyPair<true, _U1, Bend>(), bool>::type <anonymous> > constexpr std::pair<_T1, _T2>::pair(_U1&&, const _T2&)’
constexpr pair(_U1&& __x, const _T2& __y)
^~~~
/usr/include/c++/8/bits/stl_pair.h:311:18: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/serialization/extended_type_info_typeid.hpp:37,
from /usr/include/boost/archive/detail/iserializer.hpp:45,
from /usr/include/boost/archive/detail/interface_iarchive.hpp:22,
from /usr/include/boost/archive/detail/common_iarchive.hpp:23,
from /usr/include/boost/archive/basic_text_iarchive.hpp:30,
from /usr/include/boost/archive/text_iarchive.hpp:24,
from face.h:9,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/boost/serialization/access.hpp:130:9: note: candidate expects 2 arguments, 0 provided
::new(t)T;
^~~~~~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/string:40,
from /usr/include/c++/8/bits/locale_classes.h:40,
from /usr/include/c++/8/bits/ios_base.h:41,
from /usr/include/c++/8/iomanip:40,
from face.h:2,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/c++/8/bits/stl_pair.h:304:17: note: candidate: ‘constexpr std::pair<_T1, _T2>::pair(std::pair<_T1, _T2>&&) [with _T1 = const long unsigned int; _T2 = Bend]’
constexpr pair(pair&&) = default;
^~~~
/usr/include/c++/8/bits/stl_pair.h:304:17: note: candidate expects 1 argument, 0 provided
/usr/include/c++/8/bits/stl_pair.h:303:17: note: candidate: ‘constexpr std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&) [with _T1 = const long unsigned int; _T2 = Bend]’
constexpr pair(const pair&) = default;
^~~~
/usr/include/c++/8/bits/stl_pair.h:303:17: note: candidate expects 1 argument, 0 provided
/usr/include/c++/8/bits/stl_pair.h:300:21: note: candidate: ‘template<class _U1, class _U2, typename std::enable_if<(std::_PCC<((! std::is_same<const long unsigned int, _U1>::value) || (! std::is_same<Bend, _U2>::value)), const long unsigned int, Bend>::_ConstructiblePair<_U1, _U2>() && (! std::_PCC<((! std::is_same<const long unsigned int, _U1>::value) || (! std::is_same<Bend, _U2>::value)), const long unsigned int, Bend>::_ImplicitlyConvertiblePair<_U1, _U2>())), bool>::type <anonymous> > constexpr std::pair<_T1, _T2>::pair(const std::pair<_U1, _U2>&)’
explicit constexpr pair(const pair<_U1, _U2>& __p)
^~~~
/usr/include/c++/8/bits/stl_pair.h:300:21: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/serialization/extended_type_info_typeid.hpp:37,
from /usr/include/boost/archive/detail/iserializer.hpp:45,
from /usr/include/boost/archive/detail/interface_iarchive.hpp:22,
from /usr/include/boost/archive/detail/common_iarchive.hpp:23,
from /usr/include/boost/archive/basic_text_iarchive.hpp:30,
from /usr/include/boost/archive/text_iarchive.hpp:24,
from face.h:9,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/boost/serialization/access.hpp:130:9: note: candidate expects 1 argument, 0 provided
::new(t)T;
^~~~~~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/string:40,
from /usr/include/c++/8/bits/locale_classes.h:40,
from /usr/include/c++/8/bits/ios_base.h:41,
from /usr/include/c++/8/iomanip:40,
from face.h:2,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/c++/8/bits/stl_pair.h:291:19: note: candidate: ‘template<class _U1, class _U2, typename std::enable_if<(std::_PCC<((! std::is_same<const long unsigned int, _U1>::value) || (! std::is_same<Bend, _U2>::value)), const long unsigned int, Bend>::_ConstructiblePair<_U1, _U2>() && std::_PCC<((! std::is_same<const long unsigned int, _U1>::value) || (! std::is_same<Bend, _U2>::value)), const long unsigned int, Bend>::_ImplicitlyConvertiblePair<_U1, _U2>()), bool>::type <anonymous> > constexpr std::pair<_T1, _T2>::pair(const std::pair<_U1, _U2>&)’
constexpr pair(const pair<_U1, _U2>& __p)
^~~~
/usr/include/c++/8/bits/stl_pair.h:291:19: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/serialization/extended_type_info_typeid.hpp:37,
from /usr/include/boost/archive/detail/iserializer.hpp:45,
from /usr/include/boost/archive/detail/interface_iarchive.hpp:22,
from /usr/include/boost/archive/detail/common_iarchive.hpp:23,
from /usr/include/boost/archive/basic_text_iarchive.hpp:30,
from /usr/include/boost/archive/text_iarchive.hpp:24,
from face.h:9,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/boost/serialization/access.hpp:130:9: note: candidate expects 1 argument, 0 provided
::new(t)T;
^~~~~~~~~
^~~~~~~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:64,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/string:40,
from /usr/include/c++/8/bits/locale_classes.h:40,
from /usr/include/c++/8/bits/ios_base.h:41,
from /usr/include/c++/8/iomanip:40,
from face.h:2,
from bend.h:1,
from model.h:1,
from main.cpp:1:
/usr/include/c++/8/bits/stl_pair.h:242:26: note: candidate: ‘template<class _U1, class _U2, typename std::enable_if<std::__and_<std::is_default_constructible<_Tp>, std::is_default_constructible<_Dp>, std::__not_<std::__and_<std::__is_implicitly_default_constructible<_U1>, std::__is_implicitly_default_constructible<_U2> > > >::value, bool>::type <anonymous> > constexpr std::pair<_T1, _T2>::pair()’
explicit constexpr pair()
^~~~
/usr/include/c++/8/bits/stl_pair.h:242:26: note: template argument deduction/substitution failed:
/usr/include/c++/8/bits/stl_pair.h:241:59: error: no type named ‘type’ in ‘struct std::enable_if<false, bool>’
::value, bool>::type = false>
^~~~~
/usr/include/c++/8/bits/stl_pair.h:229:26: note: candidate: ‘template<class _U1, class _U2, typename std::enable_if<std::__and_<std::__is_implicitly_default_constructible<_U1>, std::__is_implicitly_default_constructible<_U2> >::value, bool>::type <anonymous> > constexpr std::pair<_T1, _T2>::pair()’
_GLIBCXX_CONSTEXPR pair()
^~~~
/usr/include/c++/8/bits/stl_pair.h:229:26: note: template argument deduction/substitution failed:
/usr/include/c++/8/bits/stl_pair.h:227:59: error: no type named ‘type’ in ‘struct std::enable_if<false, bool>’
::value, bool>::type = true>
【问题讨论】:
-
请不要张贴文字图片 - 您可以复制和粘贴文字本身,这样会更清晰。更重要的是,人们可以自己复制和粘贴它,例如在搜索某些资源以查找错误时。
标签: c++ boost boost-serialization