Описание тега boost-variant
Boost.Variant is a C++ library containing a safe, generic, stack-based discriminated union container, offering a simple solution for manipulating an object from a heterogeneous set of types in a uniform manner.
1
ответ
2-D вектор повышения:: вариант в C++
Я ищу для хранения информации из таблицы данных с несколькими строками и столбцами. Каждый столбец содержит различный тип (int, double, std::stringи т. д.), которые будут известны только во время выполнения. 2-й vector из boost::variant лучший спосо…
28 авг '14 в 18:31
1
ответ
Как вернуть значение шаблона из boost::apply_visitor?
Следующий код правильно выплевывает значения 999 а также "test"в консоль, но как мне вместо этого вернуть эти значения? Что-то вроде закомментированной строки было моей конечной целью; вернуть значение, которое я могу затем присвоить автоматической …
16 янв '15 в 05:25
1
ответ
Могу ли я назначить / создать std::variable<Ts...> для / из std::variable<Ts..., Ys...>?
Мне кажется, что назначение чего-то, что может быть яблоками или апельсинами, что-то, что может быть яблоками, апельсинами или клубникой, является четко определенным. Почему тогда я не могу этого сделать? #include <variant> int main() { std::v…
31 дек '18 в 09:45
1
ответ
Сравните два варианта с бустом static_visitor
Я начал использовать библиотеку наддува несколько дней назад, поэтому мой вопрос может быть тривиальным. Я хочу сравнить два варианта одного типа с static_visitor. Я попробовал следующее, но не хочу компилировать. struct compare:public boost::static…
03 ноя '12 в 22:07
1
ответ
Как обойти соответствующие возвращаемые типы Boost Variant?
Связанный вопрос Предположим, у нас есть: boost::variant<nil, std::string, string_struct> А также, struct string_struct { string_struct(std::string const& name = "") : name(name) {} std::string name; } Есть ли какой-нибудь способ предотвр…
11 дек '15 в 17:41
1
ответ
Древовидные контейнеры Boost:: Вариант - есть ли недостатки?
Видимо можно заказать карты и наборы boost::variant, как это: typedef boost::variant<std::string, int, bool> key_type; std::map<key_type, size_t> m; m.insert(std::make_pair(std::string("a"), 3)); m.insert(std::make_pair(1, 7)); auto x = …
19 фев '17 в 10:56
1
ответ
Простой способ моделировать JSon в C++
Мне нужно смоделировать JSon в C++. Сначала я подумал о: boost::property_tree Но, к сожалению - это не заботится о типах JSon. Целые числа представлены в виде строк - и это не вариант. Вторая идея будет: boost::variant with recursive_wrapper Что выг…
01 окт '15 в 07:32
1
ответ
boost:: вариант с недвижимыми типами
У меня есть тип T что не поддерживает движение: struct T { T(); T(T const&) = delete; T& operator=(T const&) = delete; T(T&&) = delete; T& operator=(T&&) = delete; }; Как мне создать объект типа boost::variant<T>…
02 апр '16 в 14:50
2
ответа
Как изменить поведение оператора boost:: option <
Boost:: Вариант определяет оператор <следующим образом: Если which() == rhs.which(), то: content_this Это не то, что я хочу, потому что я хотел бы провалить некоторые <сравнения. Например, если у меня есть такой вариант: typedef boost::variant<in…
06 фев '15 в 17:54
1
ответ
Как проверить, является ли тип шаблона одним из типов типа варианта?
Учитывая тип варианта и функцию шаблона, как я могу проверить, является ли тип шаблона одним из типов варианта? Есть ли более элегантный способ, чем следующий? typedef boost::variant<Foo,Bar> Var; template <typename T> void f(const T&…
31 май '16 в 07:02
2
ответа
Взаимно рекурсивный вариантный тип C++ (снова)
У меня есть проблема, аналогичная описанной здесь: C++ Взаимно рекурсивный вариантный тип Я пытаюсь создать представление JSON в C++. Многие библиотеки уже предлагают отличные JSON-представления и парсеры, которые очень быстрые, но я не изобретаю эт…
21 авг '17 в 18:42
1
ответ
Перепишите тип, чтобы использовать boost::recursive_wrapper вместо boost::make_recursive.
У меня есть этот тип using expression = boost::make_recursive_variant< number, std::tuple< boost::recursive_variant_, binary_operator, boost::recursive_variant_ > >; Неважно, что это двоичный_оператор, этот тип не работает правильно из-з…
18 окт '14 в 02:33
0
ответов
Clang-tidy ложноположительный с наддувом:: вариант
При выполнении clang-tidy на этом минимальном примере, опубликованном ниже, я получаю (imho) ложную положительную ошибку от clang-tidy (полная трассировка ошибок в конце) Value assigned to field 'id' in implicit constructor is garbage or undefined […
22 май '18 в 12:06
3
ответа
Как передать экземпляры `boost::static_visitor` в функции
Я использую boost::variant довольно часто в моих проектах. Теперь моим коллегам пришла в голову идея раздавать случаи boost::static_visitor<int> для того, чтобы настроить тип посещения. У нее был какой-то код, подобный следующему: #include <…
28 апр '17 в 09:20
3
ответа
Как получить текущий вариантный тип и определить новые переменные этого типа
У меня есть импульс:: вариант таких типов, как: typedef boost::variant< uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, float, double, std::string > StorageTt; StorageTt переменная, скажем val, установлен в один из этих типов хранения п…
18 сен '14 в 14:07
4
ответа
Вызов функции на boost:: option независимо от типа?
У меня есть класс, который имеет шаблон: template<class T = int> class slider; Класс имеет void Process(void) метод, так что, я думаю, он должен вызываться независимо от типа, возвращаемое значение равно void и в нем нет параметров. На данный …
17 май '13 в 01:29
1
ответ
Использование варианта Boost с разными типами shared_ptr<T>
Я хочу использовать Boost:: Вариант для эффективного объединения нескольких различных типов следующим образом. using VariantType = boost::variant< std::shared_ptr<StructA>, std::shared_ptr<StructB> >; Я собрал прототип на Coliru, г…
22 авг '16 в 20:01
1
ответ
ADL не может найти оператор потока с соответствующими квалификаторами для определенного пользователем типа
Я собираю службу x64 в Microsoft Windows 7 с Visual Studio 2010, используя вариант Boost, что-то вроде: namespace my_ns { typedef struct {} empty_t; typedef std::pair<size_t, std::shared_ptr<char>> string_t; typedef boost::variant<emp…
14 май '12 в 20:55
1
ответ
Определить тип варианта
Я путаю следующую проблему, идентифицируя определенный тип в boost::variant и передать его как аргумент функции-члена в объекте класса. Рассмотрим следующий код typedef boost::variant<int, string, double> Variant; class test{ void func1 (Varia…
27 ноя '12 в 17:30
1
ответ
Повысьте::Variant; Определение класса посетителя
В Java я могу определить переменную универсального класса без указания типа. class Tree<T extends Comparable<? super T>> {} somewhere-else: Tree tree; Затем я могу прочитать какой-нибудь объект из файла и привести его к желаемому типу кл…
27 мар '13 в 13:44