#pragma once #include template concept ForwardIteratorLike = requires(T a) { {++a} -> auto; {*a} -> auto; }; template concept RangeLike = requires(T a) { {a.begin()} -> ForwardIteratorLike; {a.end()} -> ForwardIteratorLike; };