Trying to declare the data contract for a variant type that can have itself as one of the alternatives.
struct Variant
{
std::variant<int, bool, std::shared_ptr<Variant>> value;
};
A std::shared_ptr has to be used as the compiler complains about incomplete type otherwise.
Calling
auto payload = daw::json::to_json(Variant {1}, std::vector<std::uint8_t> {});
With the following contract all call to to_json does not compile (parse_to_t missing).
namespace daw::json {
template<>
struct json_data_contract<Variant>
{
using type = json_type_alias<
json_variant_no_name<std::variant<int, bool, std::shared_ptr<Variant>>,
json_variant_type_list<
json_number_no_name<int>,
json_bool_no_name<bool>,
json_class_null_no_name<Variant, JsonNullable::Nullable, std::shared_ptr<Variant>>>>>;
static auto to_json_data(const Variant &value) { return value.value; }
};
}
Are these type of data structures supported?
(Using MSVC 19.37.32825)
Trying to declare the data contract for a variant type that can have itself as one of the alternatives.
A
std::shared_ptrhas to be used as the compiler complains about incomplete type otherwise.Calling
With the following contract all call to
to_jsondoes not compile (parse_to_tmissing).Are these type of data structures supported?
(Using MSVC 19.37.32825)