boost库中的variant和any是怎样工作的?在我正在处理的项目中,我目前使用一个标记联合。我想使用其他东西,因为C++中联合不允许您使用具有构造函数、析构函数或重载赋值运算符的对象。
我查询了any和variant的大小,并对它们进行了一些实验。在我的平台上,variant占用其最长可能类型的大小加上8个字节:我认为它只是8个字节的类型信息和余下的部分是存储的值。另一方面,any只占用8个字节。由于我在64位平台上,我猜测any只是保存一个指针。
Any如何知道它持有的类型?Variant通过模板实现了什么?在使用它们之前,我想了解更多关于这些类的信息。
我查询了any和variant的大小,并对它们进行了一些实验。在我的平台上,variant占用其最长可能类型的大小加上8个字节:我认为它只是8个字节的类型信息和余下的部分是存储的值。另一方面,any只占用8个字节。由于我在64位平台上,我猜测any只是保存一个指针。
Any如何知道它持有的类型?Variant通过模板实现了什么?在使用它们之前,我想了解更多关于这些类的信息。