@@ -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>
6060class SearchState final {
6161public:
6262 constexpr explicit SearchState (Key key) noexcept : key_or_result_(std::in_place_index<0 >, key) {}
@@ -87,7 +87,7 @@ class SearchState final {
8787inline constexpr std::size_t kInvalidSize = std::numeric_limits<std::size_t >::max();
8888
8989template <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
130130private:
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> {
148148public:
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 {
177175public:
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 {
197195public:
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 {
217215public:
218216 constexpr explicit SearchState (Key key) noexcept : state_(key) {}
219217
0 commit comments