Czy istnieje sposób sprawdzenia, czy dwie funkcje mają taki sam podpis? Na przykład:
int funA (int a, int b);
int funB (int a, int b);
float funC (int a, int b);
int funD (float a, int b);
W tym przykładzie, funA
i funB
jest jedynym połączeniem funkcji, które powinny powrócić true
.
c++
function
c++17
c++-standard-library
function-signature
Stefano Pittalis
źródło
źródło
Możesz sprawdzić typ funkcji za pomocą
decltype
istd::is_same
. na przykładRELACJA NA ŻYWO
źródło
Inni wspominali o rozwiązaniu, używając
std::is_same
idecltype
.Teraz, aby uogólnić porównanie dowolnej liczby podpisów funkcji, możesz wykonać następujące czynności
i porównaj tyle funkcji, ile jedna
( Zobacz demo na żywo )
Lub dla mniej pisania (tj. Bez
decltype
), uczyń to jako funkcjęi zadzwoń po prostu
( Zobacz demo na żywo )
źródło
Jako inną możliwość, która nie została wymieniona: można korzystać
typeid
ztypeinfo
i==
:źródło
error: non-constant condition for static assertion
.constexpr
. Mam teraz nieco lepszy przykład.