This came up because I've been working on a potential new deque implementation in my spare time so I had some context on std::iterator_traits, and just today I'm reviewing some code that makes a custom iterator object for something.
The short question is whether to tell the code review-ee to specialize std::iterator_traits for the new iterator.
The long question is whether I'm misunderstanding something and we shouldn't need to do this.
--
Details:
In std::deque there's a lot of insert overrides:
http://en.cppreference.com/w/cpp/container/deque/insertIncluding these two:
iterator insert( const_iterator pos, size_type count, const T& value );
template<class InputIt> void insert(iterator pos, InputIt first, InputIt last);
which are ambiguous for containers of integer types. So the documentation says the second one applies only if the InputIt qualifies as an InputIterator.
On Linux the STL implements this check (vis SFINAE):
std::__is_integer<_InputIt>::__type
and MS does:
enable_if<_Is_iterator<_InputIt>::value>