This is a really odd error, it's happening in this context:
_Vector(_Iter first, _Iter last)
I've removed some code from the above, but the error still happens with just that left.
As best I can tell from the source, std::distance isn't specialized, although it uses some types from iterator_traits which is.
But the oddest part is I don't even invoke that constructor anywhere, so how does it know it can't specialize based on _Iter? it doesn't know what type it is yet!
Where do I start with solving this problem?