Как правильно выравнивать структуры? - страница 4

 
Ihor Herasko #:

В MQL? Не слышал. В документации не могу найти. Если не затруднит, скиньте ссылку на описание.

Ну а если речь про std::variant, то суть его примерно такая же, как я описал.

Там union под капотом

 
Ihor Herasko #:

Задача - сохранить данные, тип которых впоследствии выберет пользователь. Для примера ограничимся четырьмя типами данных, хотя на самом деле их намного больше. Если делать без преобразования в строку, то нужно изначально создать все варианты типов данных, записав в соответствующий тип введенные данные:

Хотя уже тут можно возразить, что bool, int и long можно свести к одному типу или использовать объединение. Но, напоминаю, это пример.

А можно не городить огород (типов данных намного больше 4-х) и записать любой тип данных сразу в строку, просто добавив указание типа данных:

Да, теряем в производительности на преобразованиях из строки и в строку. Но это небольшая плата за универсальность.

Это, скорее, для интерпретаторов и динамической типизации. Для компиляторов - только тормоза.

 
Koldun Zloy #:

Я имел в виду VARIANT из WINAPI. Можете увидеть его в моей библиотеке.

В std::variant тоже нет преобразования в строку.

Здесь реализован первый вариант, который я описал. То есть имеется такое же перечисление типов данных (перечисление VARIANT). Для каждого типа данных имеется свой метод получения данных. Все то же самое. Этот вариант тоже можно использовать, когда нет потребности в универсальности.

 
Ihor Herasko #:

Здесь реализован первый вариант, который я описал. То есть имеется такое же перечисление типов данных (перечисление VARIANT). Для каждого типа данных имеется свой метод получения данных. Все то же самое. Этот вариант тоже можно использовать, когда нет потребности в универсальности.

Да и нет никогда потребности в такой универсальности.

Причина обращения: