diff --git a/CHANGELOG.md b/CHANGELOG.md index 83e1fab4e..7a4430434 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - NodeJS: - CHANGED: Use node-api instead of NAN. [#6452](https://github.com/Project-OSRM/osrm-backend/pull/6452) - Misc: + - FIXED: Partial fix migration from boost::optional to std::optional [#6551](https://github.com/Project-OSRM/osrm-backend/issues/6551), see also [#6592](https://github.com/Project-OSRM/osrm-backend/issues/6592) - CHANGED: keep libosrm* in the docker image for downstream linking [#6602](https://github.com/Project-OSRM/osrm-backend/pull/6602) - CHANGED: Move vector in CSVFilesParser instead copying it. [#6470](https://github.com/Project-OSRM/osrm-backend/pull/6470) - REMOVED: Get rid of unused functions in util/json_util.hpp. [#6446](https://github.com/Project-OSRM/osrm-backend/pull/6446) diff --git a/include/extractor/intersection/node_based_graph_walker.hpp b/include/extractor/intersection/node_based_graph_walker.hpp index 869e934bc..f3915ee9f 100644 --- a/include/extractor/intersection/node_based_graph_walker.hpp +++ b/include/extractor/intersection/node_based_graph_walker.hpp @@ -11,8 +11,8 @@ #include "util/typedefs.hpp" #include -#include #include +#include #include namespace osrm::extractor::intersection @@ -42,10 +42,10 @@ class NodeBasedGraphWalker * selector not provinding any further edge to traverse) */ template - boost::optional> TraverseRoad(NodeID starting_at_node_id, - EdgeID following_edge_id, - accumulator_type &accumulator, - const selector_type &selector) const; + std::optional> TraverseRoad(NodeID starting_at_node_id, + EdgeID following_edge_id, + accumulator_type &accumulator, + const selector_type &selector) const; private: const util::NodeBasedDynamicGraph &node_based_graph; @@ -111,11 +111,11 @@ struct SelectRoadByNameOnlyChoiceAndStraightness * traversal. If no such edge is found, return {} is allowed. Usually you want to choose some * form of obious turn to follow. */ - boost::optional operator()(const NodeID nid, - const EdgeID via_edge_id, - const IntersectionView &intersection, - const util::NodeBasedDynamicGraph &node_based_graph, - const EdgeBasedNodeDataContainer &node_data_container) const; + std::optional operator()(const NodeID nid, + const EdgeID via_edge_id, + const IntersectionView &intersection, + const util::NodeBasedDynamicGraph &node_based_graph, + const EdgeBasedNodeDataContainer &node_data_container) const; private: const NameID desired_name_id; @@ -138,11 +138,11 @@ struct SelectStraightmostRoadByNameAndOnlyChoice * traversal. If no such edge is found, return {} is allowed. Usually you want to choose some * form of obious turn to follow. */ - boost::optional operator()(const NodeID nid, - const EdgeID via_edge_id, - const IntersectionView &intersection, - const util::NodeBasedDynamicGraph &node_based_graph, - const EdgeBasedNodeDataContainer &node_data_container) const; + std::optional operator()(const NodeID nid, + const EdgeID via_edge_id, + const IntersectionView &intersection, + const util::NodeBasedDynamicGraph &node_based_graph, + const EdgeBasedNodeDataContainer &node_data_container) const; private: const NameID desired_name_id; @@ -187,7 +187,7 @@ struct IntersectionFinderAccumulator }; template -boost::optional> +std::optional> NodeBasedGraphWalker::TraverseRoad(NodeID current_node_id, EdgeID current_edge_id, accumulator_type &accumulator, @@ -254,19 +254,19 @@ NodeBasedGraphWalker::TraverseRoad(NodeID current_node_id, struct SkipTrafficSignalBarrierRoadSelector { - boost::optional operator()(const NodeID, - const EdgeID, - const IntersectionView &intersection, - const util::NodeBasedDynamicGraph &, - const EdgeBasedNodeDataContainer &) const + std::optional operator()(const NodeID, + const EdgeID, + const IntersectionView &intersection, + const util::NodeBasedDynamicGraph &, + const EdgeBasedNodeDataContainer &) const { if (intersection.isTrafficSignalOrBarrier()) { - return boost::make_optional(intersection[1].eid); + return std::make_optional(intersection[1].eid); } else { - return boost::none; + return std::nullopt; } } }; diff --git a/include/extractor/maneuver_override_relation_parser.hpp b/include/extractor/maneuver_override_relation_parser.hpp index df4b93a3d..c6084ad70 100644 --- a/include/extractor/maneuver_override_relation_parser.hpp +++ b/include/extractor/maneuver_override_relation_parser.hpp @@ -3,7 +3,7 @@ #include "maneuver_override.hpp" -#include +#include #include #include @@ -55,7 +55,7 @@ class ManeuverOverrideRelationParser { public: ManeuverOverrideRelationParser(); - boost::optional TryParse(const osmium::Relation &relation) const; + std::optional TryParse(const osmium::Relation &relation) const; }; } // namespace osrm::extractor diff --git a/include/extractor/profile_properties.hpp b/include/extractor/profile_properties.hpp index 817e7b763..371155b17 100644 --- a/include/extractor/profile_properties.hpp +++ b/include/extractor/profile_properties.hpp @@ -7,11 +7,11 @@ #include #include -#include #include #include #include +#include namespace osrm::extractor { @@ -80,7 +80,7 @@ struct ProfileProperties } // Check if this classes are excludable - boost::optional ClassesAreExcludable(ClassData classes) const + std::optional ClassesAreExcludable(ClassData classes) const { auto iter = std::find(excludable_classes.begin(), excludable_classes.end(), classes); if (iter != excludable_classes.end()) diff --git a/include/guidance/intersection_handler.hpp b/include/guidance/intersection_handler.hpp index dcd62d4cb..2c922510b 100644 --- a/include/guidance/intersection_handler.hpp +++ b/include/guidance/intersection_handler.hpp @@ -15,11 +15,10 @@ #include #include +#include #include #include -#include - namespace osrm::guidance { @@ -129,7 +128,7 @@ class IntersectionHandler // ^ via // // For this scenario returns intersection at `b` and `b`. - boost::optional + std::optional getNextIntersection(const NodeID at, const EdgeID via) const; bool isSameName(const EdgeID source_edge_id, const EdgeID target_edge_id) const; diff --git a/include/guidance/sliproad_handler.hpp b/include/guidance/sliproad_handler.hpp index a75f70a52..533ac4dcf 100644 --- a/include/guidance/sliproad_handler.hpp +++ b/include/guidance/sliproad_handler.hpp @@ -9,10 +9,9 @@ #include "util/node_based_graph.hpp" +#include #include -#include - namespace osrm::guidance { @@ -43,9 +42,9 @@ class SliproadHandler final : public IntersectionHandler Intersection intersection) const override final; private: - boost::optional getObviousIndexWithSliproads(const EdgeID from, - const Intersection &intersection, - const NodeID at) const; + std::optional getObviousIndexWithSliproads(const EdgeID from, + const Intersection &intersection, + const NodeID at) const; // Next intersection from `start` onto `onto` is too far away for a Siproad scenario bool nextIntersectionIsTooFarAway(const NodeID start, const EdgeID onto) const; diff --git a/include/guidance/turn_handler.hpp b/include/guidance/turn_handler.hpp index d3e25c79a..6a5210992 100644 --- a/include/guidance/turn_handler.hpp +++ b/include/guidance/turn_handler.hpp @@ -11,9 +11,8 @@ #include "util/attributes.hpp" #include "util/node_based_graph.hpp" -#include - #include +#include #include #include @@ -72,7 +71,7 @@ class TurnHandler final : public IntersectionHandler bool hasObvious(const EdgeID &via_edge, const Fork &fork) const; - boost::optional findForkCandidatesByGeometry(Intersection &intersection) const; + std::optional findForkCandidatesByGeometry(Intersection &intersection) const; bool isCompatibleByRoadClass(const Intersection &intersection, const Fork fork) const; @@ -96,7 +95,7 @@ class TurnHandler final : public IntersectionHandler handleDistinctConflict(const EdgeID via_edge, ConnectedRoad &left, ConnectedRoad &right) const; // Classification - boost::optional findFork(const EdgeID via_edge, Intersection &intersection) const; + std::optional findFork(const EdgeID via_edge, Intersection &intersection) const; OSRM_ATTR_WARN_UNUSED Intersection assignLeftTurns(const EdgeID via_edge, diff --git a/include/nodejs/node_osrm_support.hpp b/include/nodejs/node_osrm_support.hpp index 5296dc4ed..4074d984e 100644 --- a/include/nodejs/node_osrm_support.hpp +++ b/include/nodejs/node_osrm_support.hpp @@ -21,11 +21,11 @@ #include #include -#include #include #include #include +#include #include #include #include @@ -345,11 +345,11 @@ inline engine_config_ptr argumentsToEngineConfig(const Napi::CallbackInfo &args) return engine_config; } -inline boost::optional> +inline std::optional> parseCoordinateArray(const Napi::Array &coordinates_array) { Napi::HandleScope scope(coordinates_array.Env()); - boost::optional> resulting_coordinates; + std::optional> resulting_coordinates; std::vector temp_coordinates; for (uint32_t i = 0; i < coordinates_array.Length(); ++i) @@ -968,7 +968,7 @@ inline bool parseCommonParameters(const Napi::Object &obj, ParamType ¶ms) inline PluginParameters argumentsToPluginParameters( const Napi::CallbackInfo &args, - const boost::optional &output_format = {}) + const std::optional &output_format = {}) { if (args.Length() < 3 || !args[1].IsObject()) { diff --git a/include/util/coordinate_calculation.hpp b/include/util/coordinate_calculation.hpp index 4ebbafa5c..53c803a19 100644 --- a/include/util/coordinate_calculation.hpp +++ b/include/util/coordinate_calculation.hpp @@ -4,11 +4,11 @@ #include "util/coordinate.hpp" #include -#include #include #include #include +#include #include #include @@ -102,9 +102,9 @@ double bearing(const Coordinate first_coordinate, const Coordinate second_coordi double computeAngle(const Coordinate first, const Coordinate second, const Coordinate third); // find the center of a circle through three coordinates -boost::optional circleCenter(const Coordinate first_coordinate, - const Coordinate second_coordinate, - const Coordinate third_coordinate); +std::optional circleCenter(const Coordinate first_coordinate, + const Coordinate second_coordinate, + const Coordinate third_coordinate); // find the radius of a circle through three coordinates double circleRadius(const Coordinate first_coordinate, diff --git a/include/util/geojson_debug_policies.hpp b/include/util/geojson_debug_policies.hpp index 3a209db0a..0f25badd0 100644 --- a/include/util/geojson_debug_policies.hpp +++ b/include/util/geojson_debug_policies.hpp @@ -1,6 +1,7 @@ #ifndef OSRM_GEOJSON_DEBUG_POLICIES #define OSRM_GEOJSON_DEBUG_POLICIES +#include #include #include "extractor/query_node.hpp" @@ -9,8 +10,6 @@ #include "util/node_based_graph.hpp" #include "util/typedefs.hpp" -#include - namespace osrm::util { @@ -20,7 +19,7 @@ struct NodeIdVectorToLineString // converts a vector of node ids into a linestring geojson feature util::json::Object operator()(const std::vector &node_ids, - const boost::optional &properties = {}) const; + const std::optional &properties = {}) const; const std::vector &node_coordinates; }; @@ -29,7 +28,7 @@ struct CoordinateVectorToLineString { // converts a vector of node ids into a linestring geojson feature util::json::Object operator()(const std::vector &coordinates, - const boost::optional &properties = {}) const; + const std::optional &properties = {}) const; }; struct NodeIdVectorToMultiPoint @@ -38,7 +37,7 @@ struct NodeIdVectorToMultiPoint // converts a vector of node ids into a linestring geojson feature util::json::Object operator()(const std::vector &node_ids, - const boost::optional &properties = {}) const; + const std::optional &properties = {}) const; const std::vector &node_coordinates; }; @@ -47,7 +46,7 @@ struct CoordinateVectorToMultiPoint { // converts a vector of node ids into a linestring geojson feature util::json::Object operator()(const std::vector &coordinates, - const boost::optional &properties = {}) const; + const std::optional &properties = {}) const; }; } // namespace osrm::util diff --git a/include/util/geojson_debug_policy_toolkit.hpp b/include/util/geojson_debug_policy_toolkit.hpp index 62c1019ef..fcddc21a1 100644 --- a/include/util/geojson_debug_policy_toolkit.hpp +++ b/include/util/geojson_debug_policy_toolkit.hpp @@ -7,8 +7,7 @@ #include #include - -#include +#include namespace osrm::util { @@ -84,7 +83,7 @@ struct NodeIdToCoordinate inline util::json::Object makeFeature(std::string type, util::json::Array coordinates, - const boost::optional &properties = {}) + const std::optional &properties = {}) { util::json::Object result; result.values["type"] = "Feature"; diff --git a/include/util/query_heap.hpp b/include/util/query_heap.hpp index 463323efe..f481a78f0 100644 --- a/include/util/query_heap.hpp +++ b/include/util/query_heap.hpp @@ -3,11 +3,11 @@ #include #include -#include #include #include #include +#include #include #include @@ -289,26 +289,26 @@ class QueryHeap return inserted_nodes[index].node == node; } - boost::optional GetHeapNodeIfWasInserted(const NodeID node) + HeapNode *GetHeapNodeIfWasInserted(const NodeID node) { const auto index = node_index.peek_index(node); if (index >= static_cast(inserted_nodes.size()) || inserted_nodes[index].node != node) { - return {}; + return nullptr; } - return inserted_nodes[index]; + return &inserted_nodes[index]; } - boost::optional GetHeapNodeIfWasInserted(const NodeID node) const + const HeapNode *GetHeapNodeIfWasInserted(const NodeID node) const { const auto index = node_index.peek_index(node); if (index >= static_cast(inserted_nodes.size()) || inserted_nodes[index].node != node) { - return {}; + return nullptr; } - return inserted_nodes[index]; + return &inserted_nodes[index]; } NodeID Min() const diff --git a/include/util/timezones.hpp b/include/util/timezones.hpp index ff6b0bc98..8105aaae4 100644 --- a/include/util/timezones.hpp +++ b/include/util/timezones.hpp @@ -6,11 +6,11 @@ #include #include #include -#include #include #include +#include namespace osrm::updater { @@ -34,7 +34,7 @@ class Timezoner Timezoner(const char geojson[], std::time_t utc_time_now); Timezoner(const boost::filesystem::path &tz_shapes_filename, std::time_t utc_time_now); - boost::optional operator()(const point_t &point) const; + std::optional operator()(const point_t &point) const; private: void LoadLocalTimesRTree(rapidjson::Document &geojson, std::time_t utc_time); diff --git a/src/extractor/intersection/node_based_graph_walker.cpp b/src/extractor/intersection/node_based_graph_walker.cpp index 72dd8ff23..46208fb2b 100644 --- a/src/extractor/intersection/node_based_graph_walker.cpp +++ b/src/extractor/intersection/node_based_graph_walker.cpp @@ -66,7 +66,7 @@ SelectRoadByNameOnlyChoiceAndStraightness::SelectRoadByNameOnlyChoiceAndStraight { } -boost::optional SelectRoadByNameOnlyChoiceAndStraightness::operator()( +std::optional SelectRoadByNameOnlyChoiceAndStraightness::operator()( const NodeID /*nid*/, const EdgeID /*via_edge_id*/, const IntersectionView &intersection, @@ -116,7 +116,7 @@ SelectStraightmostRoadByNameAndOnlyChoice::SelectStraightmostRoadByNameAndOnlyCh { } -boost::optional SelectStraightmostRoadByNameAndOnlyChoice::operator()( +std::optional SelectStraightmostRoadByNameAndOnlyChoice::operator()( const NodeID /*nid*/, const EdgeID /*via_edge_id*/, const IntersectionView &intersection, @@ -234,7 +234,7 @@ boost::optional SelectStraightmostRoadByNameAndOnlyChoice::operator()( return {}; } - return is_only_choice_with_same_name ? boost::optional(min_element->eid) : boost::none; + return is_only_choice_with_same_name ? std::optional(min_element->eid) : std::nullopt; } // --------------------------------------------------------------------------------- diff --git a/src/extractor/maneuver_override_relation_parser.cpp b/src/extractor/maneuver_override_relation_parser.cpp index 737edf670..a0fcb2d1a 100644 --- a/src/extractor/maneuver_override_relation_parser.cpp +++ b/src/extractor/maneuver_override_relation_parser.cpp @@ -1,9 +1,9 @@ #include "extractor/maneuver_override_relation_parser.hpp" #include "extractor/maneuver_override.hpp" -#include #include +#include #include #include #include @@ -21,7 +21,7 @@ ManeuverOverrideRelationParser::ManeuverOverrideRelationParser() {} * into an InputManeuverOverride object, if the relation is considered * valid (i.e. has the minimum tags we expect). */ -boost::optional +std::optional ManeuverOverrideRelationParser::TryParse(const osmium::Relation &relation) const { @@ -35,7 +35,7 @@ ManeuverOverrideRelationParser::TryParse(const osmium::Relation &relation) const if (osmium::tags::match_none_of(tag_list, filter)) // if it's not a maneuver, continue; { - return boost::none; + return std::nullopt; } // we pretend every restriction is a conditional restriction. If we do not find any restriction, @@ -130,7 +130,7 @@ ManeuverOverrideRelationParser::TryParse(const osmium::Relation &relation) const } else { - return boost::none; + return std::nullopt; } return maneuver_override; } diff --git a/src/guidance/intersection_handler.cpp b/src/guidance/intersection_handler.cpp index 6cbd016a0..197f28014 100644 --- a/src/guidance/intersection_handler.cpp +++ b/src/guidance/intersection_handler.cpp @@ -426,7 +426,7 @@ void IntersectionHandler::assignTrivialTurns(const EdgeID via_eid, } } -boost::optional +std::optional IntersectionHandler::getNextIntersection(const NodeID at, const EdgeID via) const { // We use the intersection generator to jump over traffic signals, barriers. The intersection @@ -449,7 +449,7 @@ IntersectionHandler::getNextIntersection(const NodeID at, const EdgeID via) cons if (intersection_parameters.node == SPECIAL_NODEID || intersection_parameters.edge == SPECIAL_EDGEID) { - return boost::none; + return {}; } auto intersection = extractor::intersection::getConnectedRoads(node_based_graph, @@ -464,11 +464,10 @@ IntersectionHandler::getNextIntersection(const NodeID at, const EdgeID via) cons if (intersection.size() <= 2 || intersection.isTrafficSignalOrBarrier()) { - return boost::none; + return {}; } - return boost::make_optional( - IntersectionViewAndNode{std::move(intersection), intersection_node}); + return std::make_optional(IntersectionViewAndNode{std::move(intersection), intersection_node}); } bool IntersectionHandler::isSameName(const EdgeID source_edge_id, const EdgeID target_edge_id) const diff --git a/src/guidance/sliproad_handler.cpp b/src/guidance/sliproad_handler.cpp index 702bdf59a..0d0d6695e 100644 --- a/src/guidance/sliproad_handler.cpp +++ b/src/guidance/sliproad_handler.cpp @@ -627,7 +627,7 @@ Intersection SliproadHandler::operator()(const NodeID /*nid*/, // Implementation details -boost::optional SliproadHandler::getObviousIndexWithSliproads( +std::optional SliproadHandler::getObviousIndexWithSliproads( const EdgeID from, const Intersection &intersection, const NodeID at) const { BOOST_ASSERT(from != SPECIAL_EDGEID); @@ -638,14 +638,14 @@ boost::optional SliproadHandler::getObviousIndexWithSliproads( if (index != 0) { - return boost::make_optional(index); + return std::make_optional(index); } // Otherwise check if the road is forking into two and one of them is a Sliproad; // then the non-Sliproad is the obvious one. if (intersection.size() != 3) { - return boost::none; + return {}; } const auto forking = intersection[1].instruction.type == TurnType::Fork && @@ -653,7 +653,7 @@ boost::optional SliproadHandler::getObviousIndexWithSliproads( if (!forking) { - return boost::none; + return {}; } const auto first = getNextIntersection(at, intersection.getRightmostRoad().eid); @@ -661,27 +661,27 @@ boost::optional SliproadHandler::getObviousIndexWithSliproads( if (!first || !second) { - return boost::none; + return {}; } if (first->intersection.isDeadEnd() || second->intersection.isDeadEnd()) { - return boost::none; + return {}; } // In case of loops at the end of the road, we will arrive back at the intersection // itself. If that is the case, the road is obviously not a sliproad. if (canBeTargetOfSliproad(first->intersection) && at != second->node) { - return boost::make_optional(std::size_t{2}); + return std::make_optional(std::size_t{2}); } if (canBeTargetOfSliproad(second->intersection) && at != first->node) { - return boost::make_optional(std::size_t{1}); + return std::make_optional(std::size_t{1}); } - return boost::none; + return {}; } bool SliproadHandler::nextIntersectionIsTooFarAway(const NodeID start, const EdgeID onto) const diff --git a/src/guidance/turn_handler.cpp b/src/guidance/turn_handler.cpp index b13cbf1c9..10038ba21 100644 --- a/src/guidance/turn_handler.cpp +++ b/src/guidance/turn_handler.cpp @@ -6,10 +6,10 @@ #include #include +#include #include #include -#include using osrm::util::angularDeviation; @@ -585,7 +585,7 @@ Intersection TurnHandler::assignRightTurns(const EdgeID via_edge, } // finds a fork candidate by just looking at the geometry and angle of an intersection -boost::optional +std::optional TurnHandler::findForkCandidatesByGeometry(Intersection &intersection) const { if (intersection.size() >= 3) @@ -642,7 +642,7 @@ TurnHandler::findForkCandidatesByGeometry(Intersection &intersection) const } } } - return boost::none; + return {}; } // check if the fork candidates (all roads between left and right) and the @@ -678,8 +678,8 @@ bool TurnHandler::isCompatibleByRoadClass(const Intersection &intersection, cons // Checks whether a three-way-intersection coming from `via_edge` is a fork // with `intersection` as described as in #IntersectionExplanation@intersection_handler.hpp -boost::optional TurnHandler::findFork(const EdgeID via_edge, - Intersection &intersection) const +std::optional TurnHandler::findFork(const EdgeID via_edge, + Intersection &intersection) const { auto fork = findForkCandidatesByGeometry(intersection); if (fork) @@ -720,7 +720,7 @@ boost::optional TurnHandler::findFork(const EdgeID via_edge, } } - return boost::none; + return {}; } void TurnHandler::handleDistinctConflict(const EdgeID via_edge, diff --git a/src/util/coordinate_calculation.cpp b/src/util/coordinate_calculation.cpp index 3bc172664..4686a9827 100644 --- a/src/util/coordinate_calculation.cpp +++ b/src/util/coordinate_calculation.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include namespace osrm::util::coordinate_calculation @@ -173,14 +174,14 @@ double computeAngle(const Coordinate first, const Coordinate second, const Coord return angle; } -boost::optional +std::optional circleCenter(const Coordinate C1, const Coordinate C2, const Coordinate C3) { // free after http://paulbourke.net/geometry/circlesphere/ // require three distinct points if (C1 == C2 || C2 == C3 || C1 == C3) { - return boost::none; + return {}; } // define line through c1, c2 and c2,c3 @@ -195,7 +196,7 @@ circleCenter(const Coordinate C1, const Coordinate C2, const Coordinate C3) (std::abs(C2C1_lat) < std::numeric_limits::epsilon() && std::abs(C3C2_lat) < std::numeric_limits::epsilon())) { - return boost::none; + return {}; } else if (std::abs(C2C1_lon) < std::numeric_limits::epsilon()) { @@ -233,7 +234,7 @@ circleCenter(const Coordinate C1, const Coordinate C2, const Coordinate C3) // can this ever happen? if (std::abs(C2C1_slope - C3C2_slope) < std::numeric_limits::epsilon()) - return boost::none; + return {}; const double C1_y = static_cast(toFloating(C1.lat)); const double C1_x = static_cast(toFloating(C1.lon)); @@ -247,7 +248,7 @@ circleCenter(const Coordinate C1, const Coordinate C2, const Coordinate C3) (2 * (C3C2_slope - C2C1_slope)); const double lat = (0.5 * (C1_x + C2_x) - lon) / C2C1_slope + 0.5 * (C1_y + C2_y); if (lon < -180.0 || lon > 180.0 || lat < -90.0 || lat > 90.0) - return boost::none; + return {}; else return Coordinate(FloatLongitude{lon}, FloatLatitude{lat}); } diff --git a/src/util/geojson_debug_policies.cpp b/src/util/geojson_debug_policies.cpp index afdba87ab..9fd2ad60d 100644 --- a/src/util/geojson_debug_policies.cpp +++ b/src/util/geojson_debug_policies.cpp @@ -17,7 +17,7 @@ NodeIdVectorToLineString::NodeIdVectorToLineString( // converts a vector of node ids into a linestring geojson feature util::json::Object NodeIdVectorToLineString::operator()(const std::vector &node_ids, - const boost::optional &properties) const + const std::optional &properties) const { util::json::Array coordinates; std::transform(node_ids.begin(), @@ -37,7 +37,7 @@ NodeIdVectorToMultiPoint::NodeIdVectorToMultiPoint( util::json::Object NodeIdVectorToMultiPoint::operator()(const std::vector &node_ids, - const boost::optional &properties) const + const std::optional &properties) const { util::json::Array coordinates; std::transform(node_ids.begin(), @@ -51,7 +51,7 @@ NodeIdVectorToMultiPoint::operator()(const std::vector &node_ids, //---------------------------------------------------------------- util::json::Object CoordinateVectorToMultiPoint::operator()(const std::vector &input_coordinates, - const boost::optional &properties) const + const std::optional &properties) const { auto coordinates = makeJsonArray(input_coordinates); return makeFeature("MultiPoint", std::move(coordinates), properties); @@ -60,7 +60,7 @@ CoordinateVectorToMultiPoint::operator()(const std::vector &in //---------------------------------------------------------------- util::json::Object CoordinateVectorToLineString::operator()(const std::vector &input_coordinates, - const boost::optional &properties) const + const std::optional &properties) const { auto coordinates = makeJsonArray(input_coordinates); return makeFeature("LineString", std::move(coordinates), properties); diff --git a/src/util/timezones.cpp b/src/util/timezones.cpp index 179e2d11a..f11b1860a 100644 --- a/src/util/timezones.cpp +++ b/src/util/timezones.cpp @@ -5,13 +5,13 @@ #include #include -#include #include #include #include #include +#include #include #include #include @@ -157,7 +157,7 @@ void Timezoner::LoadLocalTimesRTree(rapidjson::Document &geojson, std::time_t ut rtree = rtree_t(polygons); } -boost::optional Timezoner::operator()(const point_t &point) const +std::optional Timezoner::operator()(const point_t &point) const { std::vector result; rtree.query(boost::geometry::index::intersects(point), std::back_inserter(result)); @@ -167,6 +167,6 @@ boost::optional Timezoner::operator()(const point_t &point) const if (boost::geometry::within(point, local_times[index].first)) return local_times[index].second; } - return boost::none; + return {}; } } // namespace osrm::updater