repr 0.1
Reconstructable string representations and more
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
visit_aggregate.h
Go to the documentation of this file.
#pragma once
#include <type_traits>
#include "arity.h"
namespace librepr::detail {
// NOLINTBEGIN
template <typename T, typename V>
requires(std::is_aggregate_v<std::remove_cvref_t<T>> && !std::is_array_v<std::remove_cvref_t<T>>)
constexpr auto visit_aggregate(V&& visitor, T&& object) {
constexpr auto member_count = arity<std::remove_cvref_t<T>>;
if constexpr (member_count == 0) {
return visitor();
} else if constexpr (member_count == 1) {
auto& [member_0] = object;
return visitor(member_0);
} else if constexpr (member_count == 2) {
auto& [member_0, member_1] = object;
} else if constexpr (member_count == 3) {
} else if constexpr (member_count == 4) {
} else if constexpr (member_count == 5) {
} else if constexpr (member_count == 6) {
} else if constexpr (member_count == 7) {
} else if constexpr (member_count == 8) {
} else if constexpr (member_count == 9) {
} else if constexpr (member_count == 10) {
} else if constexpr (member_count == 11) {
} else if constexpr (member_count == 12) {
} else if constexpr (member_count == 13) {
} else if constexpr (member_count == 14) {
} else if constexpr (member_count == 15) {
} else if constexpr (member_count == 16) {
} else if constexpr (member_count == 17) {
} else if constexpr (member_count == 18) {
} else if constexpr (member_count == 19) {
} else if constexpr (member_count == 20) {
} else if constexpr (member_count == 21) {
} else if constexpr (member_count == 22) {
} else if constexpr (member_count == 23) {
} else if constexpr (member_count == 24) {
} else if constexpr (member_count == 25) {
} else if constexpr (member_count == 26) {
} else if constexpr (member_count == 27) {
} else if constexpr (member_count == 28) {
} else if constexpr (member_count == 29) {
} else if constexpr (member_count == 30) {
} else if constexpr (member_count == 31) {
} else if constexpr (member_count == 32) {
} else if constexpr (member_count == 33) {
} else if constexpr (member_count == 34) {
} else if constexpr (member_count == 35) {
} else if constexpr (member_count == 36) {
} else if constexpr (member_count == 37) {
} else if constexpr (member_count == 38) {
} else if constexpr (member_count == 39) {
} else if constexpr (member_count == 40) {
} else if constexpr (member_count == 41) {
} else if constexpr (member_count == 42) {
} else if constexpr (member_count == 43) {
} else if constexpr (member_count == 44) {
} else if constexpr (member_count == 45) {
} else if constexpr (member_count == 46) {
} else if constexpr (member_count == 47) {
} else if constexpr (member_count == 48) {
} else if constexpr (member_count == 49) {
} else if constexpr (member_count == 50) {
} else if constexpr (member_count == 51) {
} else if constexpr (member_count == 52) {
} else if constexpr (member_count == 53) {
} else if constexpr (member_count == 54) {
} else if constexpr (member_count == 55) {
} else if constexpr (member_count == 56) {
} else if constexpr (member_count == 57) {
} else if constexpr (member_count == 58) {
} else if constexpr (member_count == 59) {
} else if constexpr (member_count == 60) {
} else if constexpr (member_count == 61) {
} else if constexpr (member_count == 62) {
} else if constexpr (member_count == 63) {
} else if constexpr (member_count == 64) {
}
}
// NOLINTEND
} // namespace librepr::detail