Funkcje 
Formalnie różne typy, które są uważane za tożsame przy przeładowaniu

Powiedzieliśmy, że przeładowanie funkcji jest możliwe, jeśli lista argumentów różni się typami lub kolejnością argumentów. Tutaj musimy uściślić, że w czasie przeładowania nie rozróżnia się pewnych typów, które formalnie są inne. Dotyczy to:

Oznacza to na przykład, że następujące przeładowania spowodują błąd kompilacji

void f(int* t);
void f(int z[]);
 
void g(int x);
void g(const int z);

Argumenty T i T& traktowane są jako tożsame tylko przez niektóre kompilatory. Jednak jeśli nawet uda się zdefiniować dwie funkcje różniące się tylko argumentem T i T&, to najczęściej przy próbie wysłania argumentu typu T do takiej funkcji kompilator sygnalizuje błąd niejednoznaczności.

Natomiast jako różne traktowane są dowolne dwa argumenty spośród następujących dwóch trójek

Materiały przeznaczone wyłącznie dla studentów
Instytutu Informatyki i Matematyki Komputerowej UJ
Daniel Wilczak