既にBoost::optional<T>
が提案されて解決済みとなっていますが、別の参考情報も。
c#のNullable<T>の実装 を見ればわかりますが、null許容型は少し頑張れば自前でも実装可能そうなレベルのクラス(構造体)+ Null許容型を簡単に扱うためのコンパイラのサポート(?? 演算子 や ?.演算子 など)になっています。
なのでコンパイラのサポートの部分は無理ですが、本体のNullable<T>の部分だけであれば、ググれば世の中にサンプルコードが色々見つけられると思います。
ただし、このページ(Nullable values in C++)のコメントに
There are lot of Nullable type implementation for C++ and most are incomplete. In C++ world, nullable types are called optional types. This was proposed for C++14 but got postponed. However the code to implement it compiles and works on most C++11 compilers. You can just drop in the single header file implementing optional type and start using it:
とあるように、その中のC++版の実装の多くは、どんな状況においても完璧に問題なく使える代物ではないようです。(限定された状況で問題ない範囲で使用している分にはいいのでしょうが)
という事で、Boost::optional<T>
で問題ないなら、Boost::optional<T>
を使った方がよいのでしょうね。
ちなみに、Microsoftが実装したコードもgithub内で見つけました。
odatacpp-server/include/odata/common/nullable.h
ご参考までに。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/08/31 02:02