获取 std::any 的大小

2023-11-24

有什么方法可以获取存储的数据的大小(以字节为单位)std::any?我想出的唯一解决方法是通过以下方式查询其值的类型std::any::type并将结果与​​已知类型的列表进行比较,例如my_any.type() == typeid(T),那么尺寸就是sizeof(T)。不幸的是,这个解决方案只有在事先知道类型的情况下才有效。

你知道有什么解决办法吗?


你不能获取所持有物体的大小std::any(除了您提到的解决方法之外)。std::any is a minimal类型擦除的实现。

如果你想要更强大的东西,你自己写(这并不难,只是模仿它std::any or boost::any并添加size()功能)。 您可能还需要添加许多其他内容any,例如 I/O、将多个数据(或任何容器的内容)存储为数组等。

以额外的数据成员(用于存储大小)为代价,您还可以扩展std::any按照 Vittorio 的建议,编写一个包装器answer.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 std::any 的大小 的相关文章

随机推荐