c++ - 为什么 boost 可选引用不是 T* 的包装器?

标签 c++ memory pointers boost reference

自从 boost::optional<T&>已经是一个特化了,为什么不直接将其实现为 T* 的包装器? ?这将允许它占用更少的空间,因为不需要 m_initialized bool 值。

最佳答案

自从 boost 1.61 optional 在引用的情况下进行了优化。

发行说明提到:

sizeof(optional<T&>) == sizeof(T*)

因此在这种情况下它肯定是作为指针实现的。

关于c++ - 为什么 boost 可选引用不是 T* 的包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12452801/

相关文章:

pointers - 使用值接收器 append 到具有足够容量的 slice

c++ - 使用 log4cxx 记录 C++ 中的特定类

c++ - 构建 qmake 项目时如何使用 C++14 功能?

c++ - 如何根据其值的某些转换的值对范围进行排序?

c - 访问超出为指针分配的内存的索引

c++ - 我可以使用指针访问多维数组吗?

c - 在 C 中复制无符号整数值时出现段错误

c++ - 将 std::bind 与成员函数一起使用,是否为该参数使用对象指针?

r - 长向量的稀疏矩阵支持(超过 2^31 个元素)

C++ 程序死于 std::bad_alloc,但 valgrind 报告没有内存泄漏