А это уже никак. Для этого нужны dependent types. Тут фишка только в том, что можно индекс проверить один раз, а потом читать много раз без проверок индекса. Но практического смысла мало, да.
На выходе Index будет иметь ВЖ зависимый от вектора, а для проверки мы будем использовать ссылку на вектор. Компилятор не даст нам сделать что-либо с вектором пока у нас есть этот индекс, что равноценно простому хранению ссылки на элемент
Можно. Но тогда будет теряться связь между компонентами. Доказал теорему А которая нужна для теоремы Б которая нужна для теоремы В и уже забыл зачем тебе А. Математики привыкшие, им проще.