Как я могу достичь синтаксиса инициализации Nlohmann/JSON, где массив и инициализация объекта неявно работают без двусмыC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как я могу достичь синтаксиса инициализации Nlohmann/JSON, где массив и инициализация объекта неявно работают без двусмы

Сообщение Anonymous »

Вот забавная маленькая головоломка (не для меня, не думайте, я старался на это целую вечность). Вот фрагмент кода: < /p>

Код: Выделить всё

#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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»