Skip to content

Commit 54469a8

Browse files
Use old way of handling reflection types
1 parent be7b193 commit 54469a8

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

include/rfl/parsing/Parser_default.hpp

+8-4
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,15 @@ struct Parser {
7171
/// Converts the variable to a JSON type.
7272
static auto write(const W& _w, const T& _var) noexcept {
7373
if constexpr (supports_attributes<W> && internal::is_attribute_v<T>) {
74-
const auto r = resolve_reflection_type(_var);
75-
return _w.from_basic_type(r, true);
74+
return _w.from_basic_type(resolve_reflection_type(_var), true);
7675
} else if constexpr (internal::has_reflection_type_v<T>) {
77-
const auto r = resolve_reflection_type(_var);
78-
return Parser<R, W, std::decay_t<decltype(r)>>::write(_w, r);
76+
using ReflectionType = std::decay_t<typename T::ReflectionType>;
77+
if constexpr (internal::has_reflection_method_v<T>) {
78+
return Parser<R, W, ReflectionType>::write(_w, _var.reflection());
79+
} else {
80+
const auto& [r] = _var;
81+
return Parser<R, W, ReflectionType>::write(_w, r);
82+
}
7983
} else if constexpr (std::is_class_v<T> && std::is_aggregate_v<T>) {
8084
const auto ptr_named_tuple = internal::to_ptr_named_tuple(_var);
8185
using PtrNamedTupleType = std::decay_t<decltype(ptr_named_tuple)>;

0 commit comments

Comments
 (0)