Skip to content

Commit 8bb1d3f

Browse files
committed
feat universal: simplify TrivialBiMaps
Tests: протестировано CI commit_hash:7fce625c9dbadc65cf7dd95dcaf46b59a9aa672b
1 parent 945a40a commit 8bb1d3f

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

universal/include/userver/utils/trivial_map.hpp

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ struct Found final {
5656
constexpr explicit operator std::size_t() const noexcept { return 0; }
5757
};
5858

59-
template <typename Key, typename Value, typename Enabled = void>
59+
template <typename Key, typename Value>
6060
class SearchState final {
6161
public:
6262
constexpr explicit SearchState(Key key) noexcept : key_or_result_(std::in_place_index<0>, key) {}
@@ -87,7 +87,7 @@ class SearchState final {
8787
inline constexpr std::size_t kInvalidSize = std::numeric_limits<std::size_t>::max();
8888

8989
template <typename Payload>
90-
inline constexpr bool kFitsInStringOrPayload =
90+
concept FitsInStringOrPayload =
9191
sizeof(Payload) <= sizeof(const char*) &&
9292
(std::is_integral_v<Payload> || std::is_enum_v<Payload> || std::is_same_v<Payload, Found>);
9393

@@ -128,7 +128,7 @@ class StringOrPayload final {
128128
}
129129

130130
private:
131-
static_assert(kFitsInStringOrPayload<Payload>);
131+
static_assert(FitsInStringOrPayload<Payload>);
132132

133133
union DataOrPayload {
134134
constexpr explicit DataOrPayload(const char* data) noexcept : data(data) {}
@@ -143,8 +143,8 @@ class StringOrPayload final {
143143
std::size_t size_;
144144
};
145145

146-
template <typename Value>
147-
class SearchState<std::string_view, Value, std::enable_if_t<kFitsInStringOrPayload<Value>>> {
146+
template <FitsInStringOrPayload Value>
147+
class SearchState<std::string_view, Value> {
148148
public:
149149
constexpr explicit SearchState(std::string_view key) noexcept : state_(key) {}
150150

@@ -164,16 +164,14 @@ class SearchState<std::string_view, Value, std::enable_if_t<kFitsInStringOrPaylo
164164
StringOrPayload<Value> state_;
165165
};
166166

167-
template <typename Value>
168-
class SearchState<zstring_view, Value, std::enable_if_t<kFitsInStringOrPayload<Value>>> final
169-
: public SearchState<std::string_view, Value> {};
167+
template <FitsInStringOrPayload Value>
168+
class SearchState<zstring_view, Value> final : public SearchState<std::string_view, Value> {};
170169

171-
template <typename Value>
172-
class SearchState<StringLiteral, Value, std::enable_if_t<kFitsInStringOrPayload<Value>>> final
173-
: public SearchState<std::string_view, Value> {};
170+
template <FitsInStringOrPayload Value>
171+
class SearchState<StringLiteral, Value> final : public SearchState<std::string_view, Value> {};
174172

175-
template <typename Key>
176-
class SearchState<Key, std::string_view, std::enable_if_t<kFitsInStringOrPayload<Key>>> final {
173+
template <FitsInStringOrPayload Key>
174+
class SearchState<Key, std::string_view> final {
177175
public:
178176
constexpr explicit SearchState(Key key) noexcept : state_(key) {}
179177

@@ -192,8 +190,8 @@ class SearchState<Key, std::string_view, std::enable_if_t<kFitsInStringOrPayload
192190
StringOrPayload<Key> state_;
193191
};
194192

195-
template <typename Key>
196-
class SearchState<Key, zstring_view, std::enable_if_t<kFitsInStringOrPayload<Key>>> final {
193+
template <FitsInStringOrPayload Key>
194+
class SearchState<Key, zstring_view> final {
197195
public:
198196
constexpr explicit SearchState(Key key) noexcept : state_(key) {}
199197

@@ -212,8 +210,8 @@ class SearchState<Key, zstring_view, std::enable_if_t<kFitsInStringOrPayload<Key
212210
StringOrPayload<Key> state_;
213211
};
214212

215-
template <typename Key>
216-
class SearchState<Key, StringLiteral, std::enable_if_t<kFitsInStringOrPayload<Key>>> final {
213+
template <FitsInStringOrPayload Key>
214+
class SearchState<Key, StringLiteral> final {
217215
public:
218216
constexpr explicit SearchState(Key key) noexcept : state_(key) {}
219217

0 commit comments

Comments
 (0)