トルネード

毛利のメモ書き

std::optional

std::optionalstd::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が呼ばれた

f:id:mojeld:20181217154100p:plain
Xcode 10.1で試した。