template <class It>

struct __is_cpp17_contiguous_iterator

Different libc++ versions use one of these class names to determine if an

iterator is contiguous. We define both so that this works regardless of the

libc++ version. We have to forward declare these types for the case that

the other is not already defined.