68得票3回答
boost::variant和boost::any是如何工作的?

boost库中的variant和any是怎样工作的?在我正在处理的项目中,我目前使用一个标记联合。我想使用其他东西,因为C++中联合不允许您使用具有构造函数、析构函数或重载赋值运算符的对象。 我查询了any和variant的大小,并对它们进行了一些实验。在我的平台上,variant占用其最长...

56得票1回答
Boost.Any与Boost.Variant的区别

我在选择Boost.Any和Boost.Variant之间遇到了困难。 什么时候应该使用它们各自呢? 它们各自的优缺点是什么? 我基本上是希望从外部源存储一些状态。

49得票1回答
这段代码在 C++17 中编译失败了吗?

我正在更新一个项目,让它使用C++17,并发现一些遵循这种模式的代码在最近版本的clang上会导致编译错误: #include <boost/variant.hpp> struct vis : public boost::static_visitor<void> {...

43得票4回答
Boost Variant: 如何获取当前持有的类型?

据我理解,所有类型的boost.variant都会被解析为实际类型(即如果编译后 boost variant<int, string> a; a="bla-bla" 将变成 string a; a="bla-bla")。因此我想知道如何获取放入 boost variant 的类型。...

28得票1回答
使用lambda进行变体访问的最佳方法是什么?

我希望能使用lambda表达式内联访问不同类型的变量。目前我的代码如下: struct Foo { boost::variant< boost::blank , int , string , vector< int > > var; templat...

20得票3回答
std::variant和boost::variant有什么区别?

在这个SO问题的答案中: C++标准库中boost::variant的等效物是什么? 提到了boost::variant和std::variant有所不同。 对于使用这些类的人来说,它们有哪些不同之处? 委员会表达了什么动机来采用带有这些差异的std::variant? 在编写任一代码...

19得票3回答
boost::variant - 为什么将"const char*"转换为"bool"?

我声明了一个接受三种类型(string、bool和int)的 boost::variant。以下代码显示我的 variant 接受 const char* 并将其转换为 bool。对于 boost::variant 来说,接受并转换不在其列表中的类型是正常行为吗?#include <io...

16得票3回答
为什么boost::variant没有提供operator !=?

给定两个完全相同的 boost::variant 实例 a 和 b,表达式 ( a == b ) 是被允许的。 然而,( a != b ) 似乎没有定义。为什么会这样?

15得票2回答
Boost Variant本质上是C/C++中的联合体吗?

我想知道Boost Variant和C/C++语言中的union数据类型之间的区别。我知道union数据类型占用相同的内存位置,并且在内存区域中最大的数据类型占用了总共使用的内存空间,例如:union space { char CHAR; float FLOAT; int I...

14得票1回答
boost::variant如何存储引用?

以下代码编译并完成了“正确的事情”: #include <boost/variant.hpp> #include <iostream> int main() { int a = 10; boost::variant<int&, float&am...