Czy * jedynym * celem * podpisu funkcji * (jak opp. Do typu) jest zdefiniowanie duplikatów w potencjalnym zestawie przeciążenia - czy są inne cele?

Związany zDlaczego rzutowanie funkcji na identyczny typ funkcji, z wyjątkiem typu powrotu, kończy się niepowodzeniem?, Chciałbym w pełniejszy sposób zrozumieć różnicę między funkcjąrodzaj i funkcjapodpis.

Na przykładrodzaj funkcji należy zazwyczaj brać pod uwagę podczas obsługi wskaźników funkcji, a typ funkcji obejmuje typ powrotu tej funkcji.

Jednak, jak zauważono w odpowiedzi Mike'a Seymoura na powyższe pytanie, Thepodpis funkcji różni się odrodzaj funkcji. Podpis jest z pewnością używany do ujednolicenia spośród potencjalnych przeciążonych funkcji (zauważając, że typ powrotu funkcji nie odgrywa roli w identyfikacji unikalnych funkcji). Ale chciałbym teraz zrozumieć znaczenie i znaczenie sygnatur funkcji a typy funkcji. Wydaje mi się, żetylko Celem sygnatur funkcji w C ++ jest identyfikacja przeciążonych kandydatów i / lub unikalnych funkcji w zestawie przeciążenia, podczas rozdzielczości przeciążenia.

Mam rację? Czy rozdzielczość przeciążenia jest jedynym celem sygnatur funkcji w C ++? A może są jakieś inne zastosowania / zastosowania sygnatur funkcji, oprócz (lub tylko pośrednio związane) rozdzielczości przeciążenia?

UZUPEŁNIENIE Dla jasności proszę zauważyć, że jestemkonkretnie dążenie do zrozumienia rozróżnienia między celem funkcjipodpis i funkcjarodzaj. To znaczy, wiem, że typ funkcji jest wymagany zarówno do używania wskaźników funkcji, jak i do implementacji konwencji wywołującej w kompilatorze / linkerze. Jednak konwencja wywołania jest istotna tylko po zakończeniu rozdzielczości przeciążenia. Pytam tutaj, szczególnie, czy jest to jedyny cel tej funkcjipodpis (w przeciwieństwie dorodzaj) służy do rozdzielczości przeciążenia.

questionAnswers(2)

yourAnswerToTheQuestion