4#include "../Description.hpp"
6#include <reflection-cpp/reflection.hpp>
15template <
typename Record>
19 DifferenceView(Record
const* lhs, Record
const* rhs)
noexcept:
25 template <
typename Callback>
26 void Iterate(Callback
const& callback)
noexcept
28 Reflection::template_for<0, RecordMemberCount<Record>>([&]<
auto I>() {
29 if (std::find(indexes.begin(), indexes.end(), I) != indexes.end())
31 callback(GetRecordMemberAt<I>(*lhs), GetRecordMemberAt<I>(*rhs));
36 void push_back(
size_t ind)
noexcept
38 indexes.push_back(ind);
41 std::vector<size_t> indexes;
46template <
typename Record>
47DifferenceView<Record> CollectDifferences(Record
const& left, Record
const& right)
noexcept
50 DifferenceView<Record> view { &left, &right };
52 Reflection::CollectDifferences(
53 left, right, [&](
size_t ind, [[maybe_unused]]
auto const& left_elem, [[maybe_unused]]
auto const& right_elem) {