This test was failing for me when I compiled with clang. Must have a different initializer.
I changed the test to match the example from the README and it passes when I build with both clang and gcc.
If it == end, then sequence_length(it) will be called which will attempt to dereference the it iterator. This is normally harmless, because the get_sequence_x() functions each check to see whether it == end. However, some runtime libraries (MSVC CRT debug build in particular) check the validity of every iterator dereference, and a runtime check will be triggered inside sequence_length() if it is at the end.