C++20 introduces concepts, a smart way to put constraints on the types a template function or class can take in.
While iterator categories and properties remain the same, what changes is how you enforce them: with tags until C++17, with concepts since C++20. For example, instead of the std::forward_iterator_tag tag you would mark your iterator with the std::forward_iterator concept.
The same thing applies to all iterator properties. For example, a Forward Iterator must be std::incrementable. This new mechanism helps in getting better iterator definitions and makes errors from the compiler much more readable.
This piece of text it's taken from this article: https://www.internalpointers.com/post/writing-custom-iterators-modern-cpp
But the author didn't upgrade the content on how to make a custom iterator on C++20 with concepts, it remains the <= C++17 tags version.
Can someone make an example on how to write a custom iterator for a custom container in a C++20 version with the concept features?