[Daryle Walker]
I guess VS2013 uses smart iterators for std::array by default/debugging-mode. They don't convert to a pointer-to-element-type.
Yep. Our contiguous iterators (vector/array/string) are always of class type, as permitted by the Standard.
I changed one function to use a pair of const_iterator, but a different function gave an internal error (C1001) when I tried to fix that one.
Internal Compiler Errors are always compiler bugs. If you encounter an ICE, please capture a preprocessed file immediately, and verify that the preprocessed file also triggers the ICE. If you keep messing around with your code, the ICE may vanish, and you may not be able to figure out how to get it back. You should report compiler bugs through Microsoft Connect, but if that's too much work, as a special service to Boost developers, I will accept bug reports through E-mail and file them in our internal database. (Please compress preprocessed files with 7z, or at least bz2.) As usual, we need a self-contained repro and the compiler command line for it. It also helps to know the compiler version you're running, and the exact content of any errors you're seeing. STL