“boost::any”和“std::any”之间的区别



>C++17 引入了对象容器std::any,基于 boost 库boost::any。我的问题是:标准化any等同于提升版,还是有区别?

关于variant也发布了类似的问题,在这种情况下存在一些差异,但我找不到有关any的参考资料。


编辑:我可以看到的一个区别是方法的可用性emplace。不仅仅是 API 的差异,我对行为和保证之间的差异感兴趣。例如,不同的分配对我来说很重要。

我对行为和保证之间的差异感兴趣。

没有任何行为差异;不是真的。它们对 ValueType 有相同的要求(可复制构造的析构函数,以及不发出异常的析构函数(。它们都对它们存储的值提供相同的操作,具有几乎相同的异常保证。

主要区别在于boost::any的实现目前没有实现小对象优化,而std::any实现可能会提供它。

最新更新