diff --git a/Redcraft.Utility/Source/Public/Containers/Array.h b/Redcraft.Utility/Source/Public/Containers/Array.h index 43555f8..ef2f752 100644 --- a/Redcraft.Utility/Source/Public/Containers/Array.h +++ b/Redcraft.Utility/Source/Public/Containers/Array.h @@ -1210,12 +1210,7 @@ public: B = MoveTemp(Temp); } -public: // STL-like iterators to enable range-based for loop support, should not be directly used. - - NODISCARD FORCEINLINE constexpr Iterator begin() { return Begin(); } - NODISCARD FORCEINLINE constexpr ConstIterator begin() const { return Begin(); } - NODISCARD FORCEINLINE constexpr Iterator end() { return End(); } - NODISCARD FORCEINLINE constexpr ConstIterator end() const { return End(); } + ENABLE_RANGE_BASED_FOR_LOOP_SUPPORT private: diff --git a/Redcraft.Utility/Source/Public/Containers/Iterator.h b/Redcraft.Utility/Source/Public/Containers/Iterator.h index 515b9d3..cac6f55 100644 --- a/Redcraft.Utility/Source/Public/Containers/Iterator.h +++ b/Redcraft.Utility/Source/Public/Containers/Iterator.h @@ -449,6 +449,12 @@ FORCEINLINE constexpr decltype(auto) REnd(initializer_list Container) NAMESPACE_END(Iteration) +#define ENABLE_RANGE_BASED_FOR_LOOP_SUPPORT public: \ + NODISCARD FORCEINLINE constexpr decltype(auto) begin() { return Begin(); } \ + NODISCARD FORCEINLINE constexpr decltype(auto) begin() const { return Begin(); } \ + NODISCARD FORCEINLINE constexpr decltype(auto) end() { return End(); } \ + NODISCARD FORCEINLINE constexpr decltype(auto) end() const { return End(); } + NAMESPACE_MODULE_END(Utility) NAMESPACE_MODULE_END(Redcraft) NAMESPACE_REDCRAFT_END