Есть поговорка: «Если ты не можешь это объяснить, ты не понимаешь».
Вы можете разбить его дальше: как писать код, который использует шаблонный код, и как писать код, который предоставляет шаблонную услугу другим.
Основное объяснение состоит в том, что шаблоны генерируют код на основе шаблона. Это источник термина «метапрограммирование». Это программирование, как программирование должно быть сделано.
Существенная сложность вектора заключается не в том, что он является вектором типа double (или типа T), а в том, что он является вектором. Базовая структура та же самая, и шаблоны отделяют то, что не соответствует.
Дальнейшее объяснение зависит от того, насколько это имеет смысл для вас!