Luc*_*lle 24 c++ boost boost-optional
Boost.Optional使用虚拟类型来允许构建未初始化的实例boost::optional<T>.调用此类型none_t,none为方便起见,已在头中定义了一个实例,允许我们编写如下代码:
boost::optional<int> uninitialized(boost::none);
Run Code Online (Sandbox Code Playgroud)
看一下定义none_t,我注意到它实际上是一个typedef,对应于某个伪结构的指向成员的指针:
namespace boost {
namespace detail { struct none_helper{}; }
typedef int detail::none_helper::*none_t ;
none_t const none = (static_cast<none_t>(0)) ;
} // namespace boost
Run Code Online (Sandbox Code Playgroud)
使用这样一个复杂的typedef比这样的简单空结构有什么好处?
namespace boost {
struct none_t {};
none_t const none;
} // namespace boost
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6160 次 |
| 最近记录: |