Boost.Optionalは、ダミータイプを使用して、boost::optional<T>
の初期化されていないインスタンスを構築できます。このタイプはnone_t
と呼ばれ、インスタンスnone
は、すでに私たちは次のようなコードを記述することができ、利便性のためのヘッダで定義されていますboost :: none_tの実装の根拠は何ですか?
boost::optional<int> uninitialized(boost::none);
none_t
の定義を見て、私はそれが実際にあることに気づきましたいくつかのダミー構造体へのポインタ・ツー・メンバーに対応するのtypedef:このような単純な空の構造体の上に、このような複雑なの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
?
namespace boost {
struct none_t {};
none_t const none;
} // namespace boost
これはちょうど[Safe-Bool Idiom](http://www.artima.com/cppsource/safebool.html)の構造であることがわかりました。 –
@MatthieuM .: 2012年6月にあなたの答えに掲載されたコメントNawazを読んだだけですか? ;) –
いいえ、自分でそれを再発見しました:/朝は難しいです:/ –