Czy istnieje prawdziwy polimorfizm statyczny w C ++?

Oto prosty kod w C ++:

#include <iostream>
#include <typeinfo>

template<typename T>
void function()
{
   std::cout << typeid(T).name() << std::endl;
}

int main()
{
   function<int>();
   function<double>();
   return 0;
}

Przeczytałem, że szablony w C ++ toczas kompilacji funkcja, która nie przypomina generycznych w języku C # / Java.

Tak więc, jak zrozumiałem, kompilator C ++ podzieli pojedynczą zdefiniowaną funkcję na różne liczby (w zależności od liczby połączeń z innym typem) funkcji.

Czy mam rację, czy nie? Nie jestem ekspertem w kompilatorach C ++, więc zadaję ci radę.

Jeśli moja sugestia dotycząca wyjścia kompilatora jest poprawna, chcę wiedzieć, czy mogę opisać powyższy kod jakopolimorfizm statyczny?

Ponieważ wydaje się, że nie jest to przesłonięcie, ale po prostu wywołanie kopii z pliku wykonywalnego lub ... nie ma znaczenia, co aplikacja ma w wyjściowym obrazie binarnym, ale tylko ważna część jest na poziomie kodu C ++ i nie powinienem patrzeć na jak kompilator generuje dane wyjściowe.

questionAnswers(5)

yourAnswerToTheQuestion