lpa*_*app 13
C++中的QVariant相当于什么?
调用C++中的等价物QVariant.
除了半开玩笑,它可能是最接近联盟的,但QVariant远不止于此; 元类型,CoW等
实际上,这些天来STL中禁止隐含共享,所以这就是为什么你不会发现这样的副作用的另一个原因.
我建议您自己记下QVariant所需的功能,并判断是否真的值得丢弃QtCore.
这只是文档中的友好提醒:
QVariant类就像最常见的Qt数据类型的联合一样.
因为C++禁止联合包含具有非默认构造函数或析构函数的类型,所以大多数有趣的Qt类不能在联合中使用.如果没有QVariant,这对QObject :: property()和数据库工作等都是一个问题.
但是,由于允许使用带有构造函数和析构函数的C++ 11类型.你在这里有另一个问题要问自己:
我是否想支持Qt所做的一切,或者我是否乐意至少要求C++ 11?
说句公道话,你也可以看看下面的升压变体的下方,但随后你最终使用升压而不是QtCore移植后.
这是对自己的另一种判断.它们不是技术上的替代品,也不是兼容性的替代品.
在这种情况下,Boost是构建时依赖性,而QtCore是运行时.Qt将保证在同一主要版本的生命周期中的二进制(和源)兼容性,而在QtCore这么长的时间内,boost可能不会做同样的事情.
无论哪种方式,这些选项都不是STL我认为你想要它的方式的最终解决方案.
从 C++17 开始,有std::any(可能包含任何可复制类型的值)和std::variant(可能包含任何给定类型的值)。这些将在 GCC 7、Clang 4.0 和 Visual C++ 2017 中得到支持。
这两个都不是完全等效的(例如,它们不支持转换内部值),但它们将允许您执行大部分QVariant操作。