While we don't have C++17 std::variant<> use a BSD licensed alternative from mapbox team in a base:: wrapper.