>C++17 引入了对象容器std::any
,基于 boost 库boost::any
。我的问题是:标准化any
等同于提升版,还是有区别?
关于variant
也发布了类似的问题,在这种情况下存在一些差异,但我找不到有关any
的参考资料。
编辑:我可以看到的一个区别是方法的可用性emplace
。不仅仅是 API 的差异,我对行为和保证之间的差异感兴趣。例如,不同的分配对我来说很重要。
我对行为和保证之间的差异感兴趣。
没有任何行为差异;不是真的。它们对 ValueType 有相同的要求(可复制构造的析构函数,以及不发出异常的析构函数(。它们都对它们存储的值提供相同的操作,具有几乎相同的异常保证。
主要区别在于boost::any
的实现目前没有实现小对象优化,而std::any
实现可能会提供它。