Вопросы по теме 'boost-variant'

Самый эффективный способ хранения смешанной коллекции двойных и целых чисел
Мне нужно сохранить набор целых и двойных чисел (представляющих номинальные и реальные данные) в С++. Очевидно, я мог бы хранить их все в std::vector<double> , но это кажется немного неправильным и не дает бонусных баллов за эстетику. Я...
526 просмотров
schedule 13.12.2022

boost:: variant рекурсивная проблема
есть ли способ сделать эту работу? Надеюсь, вы поняли, я пытаюсь создать список с помощью рекурсивных пар #include <boost/variant.hpp> #include <utility> struct nil {}; typedef boost::make_recursive_variant<nil, std::pair<int,...
1401 просмотров
schedule 09.07.2022

Как работают boost :: variant и boost :: any?
Как вариант и любой из библиотеки повышения работают внутри? В проекте, над которым я работаю, я сейчас использую помеченный союз. Я хочу использовать что-то еще, потому что объединения в C ++ не позволяют использовать объекты с конструкторами,...
30080 просмотров
schedule 03.08.2023

Передайте объект типа, агрегированного boost::variant, в функцию, которая принимает этот boost::variant
Предположим, у меня есть: class TypeA { }; class TypeB { }; typedef boost::variant<TypeA, TypeB> Type; Хорошо: void foo(Type t) { }; int main(){ TypeA a; foo(a); } #P3# void foo(Type &t) { }; int main(){...
1092 просмотров
schedule 04.10.2023

boost::вариантная реализация
Мне просто интересно узнать о реализации boost::variant . Это так работает? Два члена: Число, представляющее текущий сохраненный тип (т. е. 0 для первого параметра шаблона, 1 для второго параметра шаблона и т. д.) Объединение всех...
2632 просмотров
schedule 30.11.2023

вариант повышения с пользовательскими классами
Я пробовал boost-variant с пользовательскими классами. Я понял, что безопасным способом доступа к содержимому класса является использование boost::static_visitor . Вы знаете, почему приведенный ниже код не компилируется? Есть ли какие-либо...
2593 просмотров
schedule 02.07.2022

Является ли класс посетителя boost::variant обязательным?
Должен ли я использовать класс посетителя, такой как class Visitor : public boost::static_visitor<> , с boost::variant? Если нет, то есть ли причины не использовать посетителя? Есть ли причины предпочесть класс посетителей? Я задаю этот...
278 просмотров
schedule 30.07.2022

Должен ли я использовать boost:: variant?
Моя виртуальная функция может возвращать либо один T , либо std::vector<T> . Стоит ли возвращать boost::variant<T, std::vector<T>> в этом случае или лучше всегда возвращать std::vector<T> ? Что выглядит лучше и имеет...
313 просмотров
schedule 22.01.2023

Вывод типа boost::variant с использованием boost::spirit::karma
Я пытаюсь вывести параметры, они могут быть либо одним параметром, либо вектором параметров. Следующий код не делает то, что я хотел бы сделать: #include <iostream> #include <string> #include <boost/variant.hpp> #include...
239 просмотров

QVariant против boost::any против boost::variant
Мне нужен эффективный способ хранения значений разных типов (int, float, QString или std::string, bool) в одном из «универсальных» контейнеров, таких как QVariant. Я хочу архивировать меньшее использование памяти. Я предпочитаю контейнер,...
2867 просмотров
schedule 25.12.2022

C++: вложенная карта
Вот определение: struct nmap; struct nmap: map<string, boost::variant<string, nmap*>>{}; Последняя строка ниже не работает: nmap my_map; my_map["a"] = "b"; my_map["c"] = new nmap; my_map["c"]["d"] = "e"; Что мне нужно...
1137 просмотров
schedule 23.05.2023

boost::variant и полиморфизм
Я хочу получить указатель на базовый класс из варианта повышения, если я поставлю исходный указатель на производный класс. Есть ли способ добиться этого. Следующий код не работает. class A{ public: virtual ~A(){}}; class B : public A{}; typedef...
2063 просмотров
schedule 04.04.2023

Правильно ли реализован этот посетитель?
Я внедряю посетителя, чтобы использовать его с библиотекой вариантов ускорения . Я хочу знать, правильно ли специализировать boost::static_visitor<> с константным ссылочным типом. Обратите внимание, что мой вопрос здесь следующий:...
342 просмотров
schedule 11.07.2022

Возможная ошибка в повышении посещаемости
У меня есть следующее сообщение об ошибке: /usr/include/boost/variant/detail/visitation_impl.hpp:207: typename Visitor::result_type boost::detail::variant::visitation_impl(int, int, Visitor &, VPCV, mpl::true_, NBF, W *, S *) [W =...
883 просмотров
schedule 29.11.2022

boost::variant с недвижимыми типами
У меня есть тип T , который не поддерживает движение: struct T { T(); T(T const&) = delete; T& operator=(T const&) = delete; T(T&&) = delete; T& operator=(T&&) = delete; }; Как создать...
122 просмотров
schedule 17.09.2022

Как упростить плюсовое действие на форсированном варианте?
У меня есть определение типа варианта повышения: typedef boost::variant< bool, int, float, double> VariantType; Я хочу реализовать на нем действие добавления/вычитания/умножения/разделения. Возьмем, к примеру, Добавить класс. Проблема...
294 просмотров
schedule 20.01.2023

Получить базовый тип boost::variant
Мы можем использовать get<i>(var) для получения типа ith boost::variant, где i обычно является известной константой времени компиляции. Однако в некоторых случаях i известно только во время выполнения. Например: void do_process(int...
280 просмотров
schedule 22.02.2023

Как получить значение boost::variant для шаблонного класса
Я пытаюсь использовать boost::variant в С++ 11, чтобы создать это, но я не знаю, как это сделать. Итак, у меня есть эта структура данных шаблонного класса‹> typedef boost::variant< data<A>,data<B>> dataVar; хранится в...
478 просмотров
schedule 14.09.2022

Классификация типов в варианте Boost с использованием посетителя не компилируется
Я использую boost-variant во всех своих проектах. В одном сценарии мне нужно классифицировать типы, содержащиеся в моем boost-variant , на несколько классов. Так как у меня довольно много типов в моем варианте, я пришел к идее определить...
343 просмотров

Получить элемент по индексу из boost::variant, как это возможно с std::variant
С помощью std::variant<int, bool> я могу вызвать std::get<0>(var) , чтобы получить значение в варианте первого типа — int . Как я могу сделать это с boost::variant ? boost::get<> , кажется, поддерживает получение только по...
1338 просмотров
schedule 21.05.2022