Я думаю, что компилятор использует тот же механизм, что и для функций-членов обычных классов.Он может сделать их inline
, и я предполагаю, что он оставляет информацию, которую компоновщик использует для сортировки ее для окончательного двоичного файла.
Единственное отличие состоит в том, что компилятор «записывает» определения - то есть«создание экземпляра» шаблона - но ему удается создать точно такой же экземпляр во время компиляции a.cpp или b.cpp