有什么方法可以获取存储的数据的大小(以字节为单位)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(使用前将#替换为@)