完全符合

對於引數型別不需要轉換的過載,或者僅在仍被視為完全匹配的型別之間所需的轉換優先於需要其他轉換才能呼叫的過載。

void f(int x);
void f(double x);
f(42); // calls f(int)

當引數繫結到對同一型別的引用時,即使引用更符合 cv,匹配也被視為不需要轉換。

void f(int& x);
void f(double x);
int x = 42;
f(x); // argument type is int; exact match with int&

void g(const int& x);
void g(int x);
g(x); // ambiguous; both overloads give exact match

出於過載分辨的目的,型別“T 的陣列”被認為與“指向 T 的指標”型別完全匹配,並且函式型別 T 被認為與函式指標型別 T*完全匹配,即使兩者都需要轉換。

void f(int* p);
void f(void* p);

void g(int* p);
void g(int (&p)[100]);

int a[100];
f(a); // calls f(int*); exact match with array-to-pointer conversion
g(a); // ambiguous; both overloads give exact match