iterator_range.inl, line 65: iterator_range<I>::iterator_range()
When using empty iterator_range instances (created with default constructor) with a MSVC compiler with _HAS_ITERATOR_DEBUGGING, any operation on that instance will bork seriously!
On comparison of two iterators, MSVC will check whether they belong to the same container. But iterators of a default constructed iterator_range instances do not have a container! And even while begin and end are assigned to be the same, MSVC thinks not!
Moral of the story: while you can _create_ default constructed ranges, DO NOT USE THEM, unless this gets fixed =)