Skip to content

Commit 0918038

Browse files
blackteabt
andauthored
Refactoring EquationArray concepts (#2)
Co-authored-by: bt <bt@gh.com>
1 parent f93f477 commit 0918038

File tree

1 file changed

+4
-17
lines changed

1 file changed

+4
-17
lines changed

src/day7.cpp

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,13 @@ template<typename T>
2424
concept IsEquation = std::is_same_v<T, Equation>;
2525

2626
template<typename T>
27-
concept EquationArrayContainer = requires(T a)
27+
concept EquationArray = requires(T a)
2828
{
29-
requires IsEquation<std::iter_value_t<decltype(std::begin(a))>>;
30-
requires std::forward_iterator<decltype(std::begin(a))>;
31-
requires std::forward_iterator<decltype(std::end(a))>;
29+
requires IsEquation<std::iter_value_t<decltype(std::begin(std::declval<T&>()))>>;
30+
requires std::forward_iterator<decltype(std::begin(std::declval<T&>()))>;
31+
requires std::forward_iterator<decltype(std::end(std::declval<T&>()))>;
3232
};
3333

34-
template<typename T>
35-
concept EquationPointerArray = std::is_pointer_v<T> && IsEquation<std::remove_pointer_t<T>>;
36-
37-
template<typename T>
38-
concept EquationBoundedArray = std::is_bounded_array_v<T> && requires(T a)
39-
{
40-
requires IsEquation<std::remove_cvref_t<decltype(a[0])>>;
41-
};
42-
43-
template<typename T>
44-
concept EquationArray = EquationArrayContainer<T> || EquationPointerArray<T> || EquationBoundedArray<T>;
45-
46-
4734
// TODO: replace the function with std::from_chairs, that becomes constexpr in C++23.
4835
[[nodiscard]] constexpr std::pair<int64_t, size_t> parseNumber(std::string_view str) noexcept {
4936
constexpr auto char_to_int = [](char c) {

0 commit comments

Comments
 (0)