Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

C++17のstd::optional

C++17のstd::optionalはよいので積極的に使っていきましょう。

std::optional

swiftのoptionalと同じようなことができるようになりました。

#include <string>
#include <optional>

struct Data {
    int x;
    int y;
    Data(int x, int y)
        : x(x)
        , y(y)
    {
    }
};

std::optional<Data> makeData(int x, int y)
{
    if (y == 0) {
        return std::nullopt;
    }
    
    return std::make_optional<Data>(x, y);
}

int main(int argc, const char * argv[]) {
    const auto data = makeData(1000, 1);
    if (data) {
        printf("%d %d\n", data->x, data->y);
    }
    
    return 0;
}