C++17 の std::optional に無効値を設定する
C++17 では Boost.Optional が新しく標準ライブラリ入りしました。
Boost.Optional で無効値を指定する場合は boost::none を使っていたんですが、標準ライブラリの std::optional では std::nullopt を使用して無効値を指定します。
[ソースコード]
#include <optional> #include <iostream> template<typename T> void print(std::optional<T> const& op){ if( op ){ std::cout << "OK:" << * op << std::endl; } else{ std::cout << "NG" << std::endl; } } int main(){ std::optional<int> value; print(value); value = 42; print(value); value = std::nullopt; print(value); return 0;; }
[出力]
NG OK:42 NG
nullptr と nullopt が似ていてややこしい。。。