Из того, что я понимаю, целью size_type и difference_type является not просто знак - он также должен был адресовать, например. сегментированные архитектуры и т.д., где они могут быть разных размеров.
В этом контексте, если у меня есть контейнер с итераторами с произвольным доступом, безопасно ли мне выполнять static_cast между его значениями difference_type и size_type по желанию, исходя из того, что end() - begin() должен всегда быть равным size(), когда он ливается?
(Например, пример использования - создать контейнер, размер которого равен количеству элементов между двумя итераторами, или наоборот: скопировать контейнер определенного размера в диапазон, ограниченный итераторами.)
Все, что я должен соблюдать перед литьем (например, потеря данных)?