c++ - `boost::any` 和 `std::any` 之间的差异

标签 c++ boost c++17

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/

相关文章:

c++ - 对 const c 数组拷贝的结构化绑定(bind)应该是 const 吗?

c++ - 如何从 Qt Creator GUI 中的 QLineEdit 获取输入?

c++ - boost 路口

c++ - 模板成员的别名声明

c++ - boost::spirit::qi::parse --> 无结果

c++ - 带有 LANG=en_US.UTF-8 的 MacOS 10.6 上的 std::locale 损坏

c++ - 为可变参数模板类专门化零个模板参数和一个模板参数版本

c++ - 在具有可调用对象的线程中生成线程

c++ - 将 8 位值掩码为 32 位值

c++ - 当局部变量具有相同名称时,如何在 C++ 中分配给实例变量?