C++17引入了对象容器std::any
, 基于 boost 库 boost::any
.
我的问题是:标准化的 any
是否等同于 boost 版本,或者是否存在差异?
A similar question has been posted about variant
, 在这种情况下存在一些差异,但我找不到关于 any
的引用。
编辑:我能看到的一个区别是方法emplace
的可用性。我对行为和保证之间的差异感兴趣的不仅仅是 API 的差异。例如,不同的分配对我来说很重要。
最佳答案
I'm interested to the differences between the behavior and the guarantees.
没有任何行为差异;并不真地。它们对 ValueType 都有相同的要求(可复制构造,以及不发出异常的析构函数)。它们都对存储的值提供相同的操作,具有几乎相同的异常保证。
主要区别是boost::any
目前的实现没有实现小对象优化,而std::any
实现可能 提供它。
关于c++ - `boost::any` 和 `std::any` 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49278691/