Skip to content

Commit 58a9cbf

Browse files
authored
refactor: replace remaining std::enable_if patterns with C++20 concepts (#7645)
1 parent e3b8893 commit 58a9cbf

4 files changed

Lines changed: 12 additions & 14 deletions

File tree

include/guidance/turn_data_container.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ template <storage::Ownership Ownership> class TurnDataContainerImpl
7878
}
7979

8080
// Used by EdgeBasedGraphFactory to fill data structure
81-
template <typename = std::enable_if<Ownership == storage::Ownership::Container>>
8281
void push_back(const TurnData &data)
82+
requires(Ownership != storage::Ownership::View)
8383
{
8484
turn_instructions.push_back(data.turn_instruction);
8585
lane_data_ids.push_back(data.lane_data_id);
@@ -88,8 +88,8 @@ template <storage::Ownership Ownership> class TurnDataContainerImpl
8888
post_turn_bearings.push_back(data.post_turn_bearing);
8989
}
9090

91-
template <typename = std::enable_if<Ownership == storage::Ownership::Container>>
9291
void append(const std::vector<TurnData> &others)
92+
requires(Ownership != storage::Ownership::View)
9393
{
9494
std::for_each(
9595
others.begin(), others.end(), [this](const TurnData &other) { push_back(other); });

include/server/api/parameters_parser.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ using is_parameter_t =
2424
} // namespace detail
2525

2626
// Starts parsing and iter and modifies it until iter == end or parsing failed
27-
template <typename ParameterT,
28-
std::enable_if<detail::is_parameter_t<ParameterT>::value, int>::type = 0>
27+
template <typename ParameterT>
28+
requires detail::is_parameter_t<ParameterT>::value
2929
std::optional<ParameterT> parseParameters(std::string::iterator &iter,
3030
const std::string::iterator end);
3131

3232
// Copy on purpose because we need mutability
33-
template <typename ParameterT,
34-
std::enable_if<detail::is_parameter_t<ParameterT>::value, int>::type = 0>
33+
template <typename ParameterT>
34+
requires detail::is_parameter_t<ParameterT>::value
3535
std::optional<ParameterT> parseParameters(std::string options_string)
3636
{
3737
auto first = options_string.begin();

include/util/integer_range.hpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#ifndef INTEGER_RANGE_HPP
22
#define INTEGER_RANGE_HPP
33

4+
#include <concepts>
45
#include <iterator>
5-
#include <type_traits>
66

77
namespace osrm::util
88
{
@@ -105,10 +105,8 @@ template <typename Integer> class range
105105
};
106106

107107
template <typename Integer>
108-
range<Integer>
109-
irange(const Integer first,
110-
const Integer last,
111-
typename std::enable_if<std::is_integral<Integer>::value>::type * = nullptr) noexcept
108+
requires std::integral<Integer>
109+
range<Integer> irange(const Integer first, const Integer last) noexcept
112110
{
113111
return range<Integer>(first, last);
114112
}

include/util/json_deep_compare.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include <boost/assert.hpp>
88

9+
#include <concepts>
910
#include <set>
1011

1112
namespace osrm::util::json
@@ -132,9 +133,8 @@ struct Comparator
132133
return false;
133134
}
134135

135-
template <typename T1,
136-
typename T2,
137-
typename = std::enable_if<!std::is_same<T1, T2>::value>::type>
136+
template <typename T1, typename T2>
137+
requires(!std::same_as<T1, T2>)
138138
bool operator()(const T1 &, const T2 &)
139139
{
140140
reason = lhs_path + " and " + rhs_path + " have different types";

0 commit comments

Comments
 (0)