#pragma once

#include "scratch/bits/type-traits/is-foo.h"

namespace scratch {

template<class It> struct is_contiguous_iterator : is_pointer<It> {};

template<class It> inline constexpr bool is_contiguous_iterator_v = is_contiguous_iterator<It>::value;

} // namespace scratch

Implement `is_contiguous_iterator_v<It>`, for metaprogramming purposes.
Implement `is_contiguous_iterator_v<It>`, for metaprogramming purposes.

This trait is being proposed for standardization; see for example N4183.
You'd expect to see a `contiguous_iterator_tag` derived from
`random_access_iterator_tag` in "iterator-tags.h", but for some reason
the Committee hasn't been quick to adopt that idea.
