I'd like to create a concept for tuple-like types. A tuple-like type would be something that, like std::pair, std::tuple and std::array, offers a compile time known number of types accessible through a compile time indexed get<size> function.
I am new to concepts and I do not know where to start. Unfortunately, the STL seems not to have such a concept in the <concepts> header.
For example, I can write:
template<typename T>
concept tuple_like = requires(T value)
{
std::invoke(get<0>, value);
};
But I am not sure how to generalize that 0 to be any index.