由于boost 1.61可选,因此在参考的情况下进行了优化.
发行说明提到:
sizeof(optional<T&>) == sizeof(T*)
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,它肯定是作为指针实现的.
可能是这样,因为未初始化的boost::optional<T*>
对象必须与用boost::optional<T*>
初始化的对象不同NULL
,例如,此函数不能返回任何值、aNULL
或非NULL
指针。
在这种情况下,为什么不使用普通指针来NULL
指示没有值。无需添加更多复杂性boost::optional<>
。我的意思是,让事情变得更大或更复杂很容易,但很难让它们变得更好。