Код: Выделить всё
struct Box {
struct Item { float value; };
using Boxes = std::vector;
union Value {
Item item;
Boxes boxes;
};
Value contents;
std::string label;
};
< /code>
(не совсем то, что имел оригинальный вопрос, я получаю здесь какую -то поэтическую лицензию.) И с вариантом класс может выглядеть так: < /p>
struct Box {
struct Item { float value; };
using Boxes = std::vector;
std::variant contents;
std::string label;
};
< /code>
Дело в том, что с первой формулировкой этой структуры я могу написать < /p>
if (box.contents.boxes.size() > 2) { foo(); }
Код: Выделить всё
if (std::get(box.contents).size() > 2) { foo(); }
< /code>
Я чувствую, что вторая версия гораздо менее читаема, немного запутанна и довольно отвлекает. Плюс - я должен знать тип коробок Что я могу сделать в своем коде, чтобы избавить своих пользователей необходимостью сделать такого рода std :: get () и сделать их жизнь более приятными?
Подробнее здесь: https://stackoverflow.com/questions/623 ... yntax-wise
Мобильная версия