Re: [hpx-users] static assertion failed
Hi, thank you. Karol On 19/01/2020 16:29, Hartmut Kaiser wrote: >> I have issue with serialization of my structure. Structure is following: >> >> struct point { >> float ig; >> std::size_t set; >> }; >> >> When I am building my project I get errors typed below. I do not know how >> to fix this. > When compiling with -std=c++17 this should compile without change. For earlier > versions of the standard, you will have to define a serialization function for > your type explicitly: > > template > void serialize(Archive& ar, point& pt, unsigned) > { > ar & pt.ig & pt.set; > } > > That should do the trick. > > HTH > Regards Hartmut > --- > http://stellar.cct.lsu.edu > https://github.com/STEllAR-GROUP/hpx > > >> Best, >> >> Karol >> >> -- >> -- >> >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/basic_a >> rchive.hpp:66:13: >> required from 'void >> hpx::serialization::basic_archive::invoke(T&) [with T = const >> hpx::util::tuple > >>> ; Archive = hpx::serialization::output_archive]' >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/seriali >> ze.hpp:20:9: >> required from 'hpx::serialization::output_archive& >> hpx::serialization::operator<<(hpx::serialization::output_archive&, >> const T&) [with T = hpx::util::tuple> std::allocator > >]' >> /home/user/libs/hpx_build_system/include/hpx/runtime/actions/transfer_base >> _action.hpp:306:16: >> required from 'void >> hpx::actions::transfer_base_action::save_base(hpx::serialization:: >> output_archive&) >> [with Action = hpx::lcos::base_lco_with_value, >> std::vector, >> hpx::traits::detail::managed_component_tag>::set_value_action]' >> /home/user/libs/hpx_build_system/include/hpx/runtime/actions/transfer_cont >> inuation_action.hpp:211:9: >> required from 'void >> hpx::actions::transfer_continuation_action::save(hpx::serializatio >> n::output_archive&) >> [with Action = hpx::lcos::base_lco_with_value, >> std::vector, >> hpx::traits::detail::managed_component_tag>::set_value_action]' >> /home/user/workspace/Masters/mdfs_hpx/main.cc:200:1: required from here >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/access. >> hpp:106:9: >> error: static assertion failed: No serialization method found >>static_assert(dependent_false::value, >>^ >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/access. >> hpp: >> In instantiation of 'static void >> hpx::serialization::access::serialize_dispatcher::non_intrusive::call(A >> rchive&, >> T&, unsigned int) [with Archive = hpx::serialization::output_archive; T = >> const mdfs::point]': >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/access. >> hpp:224:48: >> required from 'static void >> hpx::serialization::access::serialize(Archive&, T&, unsigned int) [with >> Archive = hpx::serialization::output_archive; T = const mdfs::point]' >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_ >> archive.hpp:284:30: >> required from 'void >> hpx::serialization::output_archive::save_nonintrusively_polymorphic(const >> T&, std::false_type) [with T = mdfs::point; std::false_type = >> std::integral_constant]' >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_ >> archive.hpp:260:13: >> required from 'void >> hpx::serialization::output_archive::save_bitwise(const T&, >> std::false_type) [with T = mdfs::point; std::false_type = >> std::integral_constant]' >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_ >> archive.hpp:224:13: >> required from 'typename std::enable_if<((! std::is_integral<_Tp>::value) >> && (! std::is_enum<_Tp>::value))>::type >> hpx::serialization::output_archive::save(const T&) [with T = mdfs::point; >> typename std::enable_if<((! std::is_integral<_Tp>::value) && (! >> std::is_enum<_Tp>::value))>::type = void]' >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_ >> archive.hpp:213:13: >> required from 'void >> hpx::serialization::output_archive::invoke_impl(const T&) [with T = >> mdfs::point]' >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/basic_a >> rchive.hpp:66:13: >> [ skipping 33 instantiation contexts, use -ftemplate-backtrace-limit=0 to >> disable ] >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_ >> archive.hpp:213:13: >> required from 'void >> hpx::serialization::output_archive::invoke_impl(const T&) [with T = >> hpx::util::tuple > >>> ]' >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/basic_a >> rchive.hpp:66:13: >> required from 'void >> hpx::serialization::basic_archive::invoke(T&) [with T = const >> hpx::util::tuple > >>> ; Archive = hpx::serialization::output_archive]' >> /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/seriali >> ze.hpp:20:9: >> required from
Re: [hpx-users] static assertion failed
> I have issue with serialization of my structure. Structure is following: > > struct point { >float ig; >std::size_t set; > }; > > When I am building my project I get errors typed below. I do not know how > to fix this. When compiling with -std=c++17 this should compile without change. For earlier versions of the standard, you will have to define a serialization function for your type explicitly: template void serialize(Archive& ar, point& pt, unsigned) { ar & pt.ig & pt.set; } That should do the trick. HTH Regards Hartmut --- http://stellar.cct.lsu.edu https://github.com/STEllAR-GROUP/hpx > > Best, > > Karol > > -- > -- > > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/basic_a > rchive.hpp:66:13: > required from 'void > hpx::serialization::basic_archive::invoke(T&) [with T = const > hpx::util::tuple > > >; Archive = hpx::serialization::output_archive]' > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/seriali > ze.hpp:20:9: > required from 'hpx::serialization::output_archive& > hpx::serialization::operator<<(hpx::serialization::output_archive&, > const T&) [with T = hpx::util::tuple std::allocator > >]' > /home/user/libs/hpx_build_system/include/hpx/runtime/actions/transfer_base > _action.hpp:306:16: > required from 'void > hpx::actions::transfer_base_action::save_base(hpx::serialization:: > output_archive&) > [with Action = hpx::lcos::base_lco_with_value, > std::vector, > hpx::traits::detail::managed_component_tag>::set_value_action]' > /home/user/libs/hpx_build_system/include/hpx/runtime/actions/transfer_cont > inuation_action.hpp:211:9: > required from 'void > hpx::actions::transfer_continuation_action::save(hpx::serializatio > n::output_archive&) > [with Action = hpx::lcos::base_lco_with_value, > std::vector, > hpx::traits::detail::managed_component_tag>::set_value_action]' > /home/user/workspace/Masters/mdfs_hpx/main.cc:200:1: required from here > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/access. > hpp:106:9: > error: static assertion failed: No serialization method found > static_assert(dependent_false::value, > ^ > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/access. > hpp: > In instantiation of 'static void > hpx::serialization::access::serialize_dispatcher::non_intrusive::call(A > rchive&, > T&, unsigned int) [with Archive = hpx::serialization::output_archive; T = > const mdfs::point]': > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/access. > hpp:224:48: > required from 'static void > hpx::serialization::access::serialize(Archive&, T&, unsigned int) [with > Archive = hpx::serialization::output_archive; T = const mdfs::point]' > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_ > archive.hpp:284:30: > required from 'void > hpx::serialization::output_archive::save_nonintrusively_polymorphic(const > T&, std::false_type) [with T = mdfs::point; std::false_type = > std::integral_constant]' > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_ > archive.hpp:260:13: > required from 'void > hpx::serialization::output_archive::save_bitwise(const T&, > std::false_type) [with T = mdfs::point; std::false_type = > std::integral_constant]' > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_ > archive.hpp:224:13: > required from 'typename std::enable_if<((! std::is_integral<_Tp>::value) > && (! std::is_enum<_Tp>::value))>::type > hpx::serialization::output_archive::save(const T&) [with T = mdfs::point; > typename std::enable_if<((! std::is_integral<_Tp>::value) && (! > std::is_enum<_Tp>::value))>::type = void]' > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_ > archive.hpp:213:13: > required from 'void > hpx::serialization::output_archive::invoke_impl(const T&) [with T = > mdfs::point]' > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/basic_a > rchive.hpp:66:13: > [ skipping 33 instantiation contexts, use -ftemplate-backtrace-limit=0 to > disable ] > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_ > archive.hpp:213:13: > required from 'void > hpx::serialization::output_archive::invoke_impl(const T&) [with T = > hpx::util::tuple > > >]' > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/basic_a > rchive.hpp:66:13: > required from 'void > hpx::serialization::basic_archive::invoke(T&) [with T = const > hpx::util::tuple > > >; Archive = hpx::serialization::output_archive]' > /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/seriali > ze.hpp:20:9: > required from 'hpx::serialization::output_archive& > hpx::serialization::operator<<(hpx::serialization::output_archive&, > const T&) [with T = hpx::util::tuple std::allocator > >]' >
[hpx-users] static assertion failed
Hi all, I have issue with serialization of my structure. Structure is following: struct point { float ig; std::size_t set; }; When I am building my project I get errors typed below. I do not know how to fix this. Best, Karol /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/basic_archive.hpp:66:13: required from ‘void hpx::serialization::basic_archive::invoke(T&) [with T = const hpx::util::tuple > >; Archive = hpx::serialization::output_archive]’ /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/serialize.hpp:20:9: required from ‘hpx::serialization::output_archive& hpx::serialization::operator<<(hpx::serialization::output_archive&, const T&) [with T = hpx::util::tuple > >]’ /home/user/libs/hpx_build_system/include/hpx/runtime/actions/transfer_base_action.hpp:306:16: required from ‘void hpx::actions::transfer_base_action::save_base(hpx::serialization::output_archive&) [with Action = hpx::lcos::base_lco_with_value, std::vector, hpx::traits::detail::managed_component_tag>::set_value_action]’ /home/user/libs/hpx_build_system/include/hpx/runtime/actions/transfer_continuation_action.hpp:211:9: required from ‘void hpx::actions::transfer_continuation_action::save(hpx::serialization::output_archive&) [with Action = hpx::lcos::base_lco_with_value, std::vector, hpx::traits::detail::managed_component_tag>::set_value_action]’ /home/user/workspace/Masters/mdfs_hpx/main.cc:200:1: required from here /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/access.hpp:106:9: error: static assertion failed: No serialization method found static_assert(dependent_false::value, ^ /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/access.hpp: In instantiation of ‘static void hpx::serialization::access::serialize_dispatcher::non_intrusive::call(Archive&, T&, unsigned int) [with Archive = hpx::serialization::output_archive; T = const mdfs::point]’: /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/access.hpp:224:48: required from ‘static void hpx::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = hpx::serialization::output_archive; T = const mdfs::point]’ /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_archive.hpp:284:30: required from ‘void hpx::serialization::output_archive::save_nonintrusively_polymorphic(const T&, std::false_type) [with T = mdfs::point; std::false_type = std::integral_constant]’ /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_archive.hpp:260:13: required from ‘void hpx::serialization::output_archive::save_bitwise(const T&, std::false_type) [with T = mdfs::point; std::false_type = std::integral_constant]’ /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_archive.hpp:224:13: required from ‘typename std::enable_if<((! std::is_integral<_Tp>::value) && (! std::is_enum<_Tp>::value))>::type hpx::serialization::output_archive::save(const T&) [with T = mdfs::point; typename std::enable_if<((! std::is_integral<_Tp>::value) && (! std::is_enum<_Tp>::value))>::type = void]’ /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_archive.hpp:213:13: required from ‘void hpx::serialization::output_archive::invoke_impl(const T&) [with T = mdfs::point]’ /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/basic_archive.hpp:66:13: [ skipping 33 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/output_archive.hpp:213:13: required from ‘void hpx::serialization::output_archive::invoke_impl(const T&) [with T = hpx::util::tuple > >]’ /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/basic_archive.hpp:66:13: required from ‘void hpx::serialization::basic_archive::invoke(T&) [with T = const hpx::util::tuple > >; Archive = hpx::serialization::output_archive]’ /home/user/libs/hpx_build_system/include/hpx/runtime/serialization/serialize.hpp:20:9: required from ‘hpx::serialization::output_archive& hpx::serialization::operator<<(hpx::serialization::output_archive&, const T&) [with T = hpx::util::tuple > >]’ /home/user/libs/hpx_build_system/include/hpx/runtime/actions/transfer_base_action.hpp:306:16: required from ‘void hpx::actions::transfer_base_action::save_base(hpx::serialization::output_archive&) [with Action = hpx::lcos::base_lco_with_value, std::vector, hpx::traits::detail::managed_component_tag>::set_value_action]’ /home/user/libs/hpx_build_system/include/hpx/runtime/actions/transfer_continuation_action.hpp:211:9: required from ‘void hpx::actions::transfer_continuation_action::save(hpx::serialization::output_archive&) [with Action = hpx::lcos::base_lco_with_value, std::vector,