refactor(*): replace the old with the new iterator and range library

This commit is contained in:
2024-12-17 21:49:37 +08:00
parent 0a37460f24
commit 6a37e91639
21 changed files with 312 additions and 640 deletions

View File

@ -37,7 +37,7 @@ NODISCARD FORCEINLINE constexpr auto Begin(T&& Container)
/** Overloads the Begin algorithm for initializer_list. */
template <typename T>
NODISCARD FORCEINLINE constexpr auto Begin(initializer_list<T>& Container)
NODISCARD FORCEINLINE constexpr const T* Begin(initializer_list<T>& Container)
{
return Container.begin();
}
@ -67,7 +67,7 @@ NODISCARD FORCEINLINE constexpr auto End(T&& Container)
/** Overloads the End algorithm for initializer_list. */
template <typename T>
NODISCARD FORCEINLINE constexpr auto End(initializer_list<T>& Container)
NODISCARD FORCEINLINE constexpr const T* End(initializer_list<T>& Container)
{
return Container.end();
}
@ -180,6 +180,13 @@ NODISCARD FORCEINLINE constexpr size_t Num(T&& Container)
return Range::End(Forward<T>(Container)) - Range::Begin(Forward<T>(Container));
}
/** Overloads the Num algorithm for initializer_list. */
template <typename T>
NODISCARD FORCEINLINE constexpr size_t Num(initializer_list<T>& Container)
{
return Container.size();
}
/** @return true if the container is empty, false otherwise. */
template <typename T> requires (requires(T&& Container) { { Container.IsEmpty() } -> CBooleanTestable; })
NODISCARD FORCEINLINE constexpr bool IsEmpty(T&& Container)