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; }