为什么Boost可选引用不是T*的包装器?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (33)

boost::optional<T&>已经是一个专门化了,为什么它不只是作为一个包装器来实现呢?T*?这将允许它占用更少的空间,因为不需要m_initialized布尔。

提问于
用户回答回答于

可选性被优化。

新闻稿中提到:

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

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

用户回答回答于

可能是因为一个未初始化的boost::optional<T*>对象必须与boost::optional<T*>NULL,G.此函数不能返回值,则NULL或非___NULL指针

为什么不在这种情况下使用普通指针NULL表示没有价值。没有必要在此基础上增加更多的复杂性boost::optional<>。我的意思是,让事情变得更大或更复杂是很容易的,但很难使它们变得更好。

所属标签

可能回答问题的人

  • 学生

    3 粉丝476 提问8 回答
  • uncle_light

    5 粉丝518 提问6 回答
  • o o

    4 粉丝494 提问5 回答
  • 富有想象力的人

    3 粉丝0 提问5 回答

扫码关注云+社区

领取腾讯云代金券