std::optionalはstd::optional<int>
と指定するとnulloptを代入できるので、0以外のnulloptが利用できる。
std::optional<int> i1 = std::nullopt; if(i1){ std::cout << i1.value() << std::endl; }
std::optional<std::string>
でも同じくnulloptが使えます。
std::optional<std::string> text1 = std::make_optional("hoge"); text1.reset();//std::nulloptが代入される。 if(text1 == std::nullopt) { }
std::optional<std::shared_ptr<クラス>>
のように使ってみた。
std::optional<std::shared_ptr<hoge::test1>> atest1 = std::make_optional(std::make_shared<hoge::test1>() );
if(atest1)
{
std::cout << atest1.value()->value_1() << std::endl << std::endl;
}
作成したstd::optional<std::shared_ptr<hoge::test1>> atest1
に nulloptを代入
atest1 = std::nullopt;
hoge::test1::~test1()
destructorが呼ばれた
Xcode 10.1で試した。