Skip to content

ABM Serialization Tests don't build on Mac #1145

@DavidKerkmann

Description

@DavidKerkmann

Bug description

When compiling, there is a problem with the serialization of the bitsets in the test TestAbmSerialization.TestingScheme.
It seems to be a problem correctly detecting the bitset in the serialization templates.

Version

Mac

To reproduce

Build tests as normal.

Relevant log output

uild] In file included from /Users/david/Documents/HZI/memilio/cpp/tests/test_abm_serialization.cpp:20:
[build] In file included from /Users/david/Documents/HZI/memilio/cpp/tests/matchers.h:25:
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/io.h:853:5: error: no matching function for call to 'serialize_internal'
[build]     serialize_internal(io, t);
[build]     ^~~~~~~~~~~~~~~~~~
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/json_serializer.h:416:22: note: in instantiation of function template specialization 'mio::serialize<mio::JsonContext, std::__bit_const_reference<std::vector<bool>>>' requested here
[build]                 mio::serialize(ctxt, *it);
[build]                      ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/io.h:853:5: note: in instantiation of function template specialization 'mio::serialize_internal<std::vector<bool>, nullptr>' requested here
[build]     serialize_internal(io, t);
[build]     ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/json_serializer.h:487:5: note: in instantiation of function template specialization 'mio::serialize<mio::JsonContext, std::vector<bool>>' requested here
[build]     serialize(ctxt, t);
[build]     ^
[build] /Users/david/Documents/HZI/memilio/cpp/tests/test_abm_serialization.cpp:130:47: note: in instantiation of function template specialization 'mio::serialize_json<std::vector<bool>>' requested here
[build]     testing_criteria["ages"]["bitset"] = mio::serialize_json(ages_bits).value();
[build]                                               ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/io.h:708:6: note: candidate template ignored: requirement 'std::is_enum<std::__bit_const_reference<std::vector<bool, std::allocator<bool>>>>::value' was not satisfied [with IOContext = mio::JsonContext, E = std::__bit_const_reference<std::vector<bool>>]
[build] void serialize_internal(IOContext& io, E e)
[build]      ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/io.h:746:6: note: candidate template ignored: requirement 'is_expression_valid<serialize_t, mio::JsonContext, std::__bit_const_reference<std::vector<bool, std::allocator<bool>>>>::value' was not satisfied [with IOContext = mio::JsonContext, T = std::__bit_const_reference<std::vector<bool>>]
[build] void serialize_internal(IOContext& io, const T& t)
[build]      ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/io.h:802:6: note: candidate template ignored: requirement 'conjunction_v<mio::is_expression_valid<details::compare_iterators_t, std::__bit_const_reference<std::vector<bool, std::allocator<bool>>>>, mio::negation<mio::is_expression_valid<serialize_t, mio::JsonContext, std::__bit_const_reference<std::vector<bool, std::allocator<bool>>>>>>' was not satisfied [with IOContext = mio::JsonContext, Container = std::__bit_const_reference<std::vector<bool>>]
[build] void serialize_internal(IOContext& io, const Container& container)
[build]      ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/io.h:611:6: note: candidate template ignored: could not match 'EigenBase' against '__bit_const_reference'
[build] void serialize_internal(IOContext& io, const Eigen::EigenBase<M>& mat)
[build]      ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/io.h:658:6: note: candidate template ignored: could not match 'bitset' against '__bit_const_reference'
[build] void serialize_internal(IOContext& io, const std::bitset<N> bitset)
[build]      ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/io.h:581:6: note: candidate template ignored: requirement 'is_expression_valid<details::tuple_size_value_t, std::__bit_const_reference<std::vector<bool, std::allocator<bool>>>>::value' was not satisfied [with IOContext = mio::JsonContext, Tup = std::__bit_const_reference<std::vector<bool>>]
[build] void serialize_internal(IOContext& io, const Tup& tup)
[build]      ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/default_serialize.h:213:6: note: candidate template ignored: requirement 'is_expression_valid<details::default_serialize_expr_t, std::__bit_const_reference<std::vector<bool, std::allocator<bool>>>>::value' was not satisfied [with IOContext = mio::JsonContext, DefaultSerializable = std::__bit_const_reference<std::vector<bool>>]
[build] void serialize_internal(IOContext& io, const DefaultSerializable& a)
[build]      ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/utils/random_number_generator.h:683:6: note: candidate template ignored: substitution failure [with IOContext = mio::JsonContext, UniformDistributionParams = std::__bit_const_reference<std::vector<bool>>]: no member named 'DistType' in 'std::__bit_const_reference<std::vector<bool>>'
[build] void serialize_internal(IOContext& io, const UniformDistributionParams& p)
[build]      ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/json_serializer.h:383:17: note: candidate template ignored: requirement 'JsonType<std::__bit_const_reference<std::vector<bool, std::allocator<bool>>>, void>::value' was not satisfied [with T = std::__bit_const_reference<std::vector<bool>>]
[build]     friend void serialize_internal(JsonContext& io, const T& t)
[build]                 ^
[build] /Users/david/Documents/HZI/memilio/cpp/memilio/../memilio/io/json_serializer.h:408:17: note: candidate template ignored: requirement 'conjunction_v<mio::is_expression_valid<details::compare_iterators_t, std::__bit_const_reference<std::vector<bool, std::allocator<bool>>>>, mio::negation<mio::JsonType<std::__bit_const_reference<std::vector<bool, std::allocator<bool>>>, void>>, mio::negation<mio::is_expression_valid<serialize_t, mio::JsonContext, std::__bit_const_reference<std::vector<bool, std::allocator<bool>>>>>>' was not satisfied [with Container = std::__bit_const_reference<std::vector<bool>>]
[build]     friend void serialize_internal(JsonContext& io, const Container& v)
[build]                 ^

Add any relevant information, e.g. used compiler, screenshots.

- Compiler: Clang 13.0.0

Checklist

  • Attached labels, especially loc:: or model:: labels.
  • Linked to project

Metadata

Metadata

Assignees

Labels

class::bugBugs found in the softwareloc::backendThis issue concerns the C++ backend implementation.model::abmThis issue concerns any kind of agent-based model.

Type

No type

Projects

Status

Done (Total) 💯

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions