C ++ 17引入了基于boost库std::any
的对象容器boost::any
。
我的问题是:标准any
是否等同于升级版本,还是存在差异?
一个similar question has been posted about variant
,在这种情况下存在一些差异,但我找不到关于any
的引用。
编辑:我能看到的差异是方法emplace
的可用性。不仅仅是API的差异我对行为和保证之间的差异感兴趣。例如,不同的分配对我来说意义重大。
答案 0 :(得分:3)
我对行为与保证之间的差异感兴趣。
没有任何行为差异;并不是的。它们对ValueType具有相同的要求(可复制构造,并且不会发出异常的析构函数)。它们都对它们存储的值提供相同的操作,具有几乎相同的异常保证。
主要区别在于boost::any
目前的实现并未实现小对象优化,而std::any
实现可能提供它。