Код: Выделить всё
#include
#include
#include
#include
#include
#include
#include
class Node {
public:
using value_type = std::variant<
std::monostate,
bool,
double,
std::string,
std::vector,
std::map
>;
// Implicit constructors for basic types
Node() = default;
Node(bool value) : data(value) {}
Node(int value) : data(static_cast(value)) {}
Node(double value) : data(value) {}
Node(const char* value) : data(std::string(value)) {}
Node(std::string value) : data(std::move(value)) {}
// Initializer list constructors - attempting to mimic nlohmann/json behavior
Node(std::initializer_list init) {
std::map m;
for (const auto& p : init) {
m[p.first] = p.second;
}
data = std::move(m);
}
Node(std::initializer_list init) {
data = std::vector(init);
}
// For demonstration
void print() const {
if (std::holds_alternative(data)) {
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79682623/how-can-i-achieve-nlohmann-json-like-initialization-syntax-where-both-array-and[/url]