Gibt es eine Möglichkeit zu überprüfen, ob zwei Funktionen dieselbe Signatur haben? Zum Beispiel:
int funA (int a, int b);
int funB (int a, int b);
float funC (int a, int b);
int funD (float a, int b);
In diesem Beispiel ist funA
und funB
die einzige Kombination von Funktionen, die zurückgegeben werden sollte true
.
c++
function
c++17
c++-standard-library
function-signature
Stefano Pittalis
quelle
quelle
Sie können den Funktionstyp mit
decltype
und überprüfenstd::is_same
. z.BLEBEN
quelle
Andere haben die Lösung mit
std::is_same
und erwähntdecltype
.Um den Vergleich für eine beliebige Anzahl von Funktionssignaturen zu verallgemeinern, können Sie Folgendes tun
und vergleichen Sie so viele Funktionen wie Sie möchten
( Siehe Live-Demo )
Oder
decltype
machen Sie es als Funktion, wenn Sie weniger tippen (dh ohne )und einfach bei anrufen
( Siehe Live-Demo )
quelle
Als weitere Möglichkeit, die nicht erwähnt wurde: Sie können
typeid
vontypeinfo
und verwenden==
:quelle
error: non-constant condition for static assertion
.constexpr
. Ich habe jetzt ein etwas besseres Beispiel.