Existe-t-il un moyen de vérifier si deux fonctions ont la même signature? Par exemple:
int funA (int a, int b);
int funB (int a, int b);
float funC (int a, int b);
int funD (float a, int b);
Dans cet exemple, funA
et funB
est la seule combinaison de fonctions à renvoyer true
.
c++
function
c++17
c++-standard-library
function-signature
Stefano Pittalis
la source
la source
Vous pouvez vérifier le type de fonction avec
decltype
etstd::is_same
. par exempleVIVRE
la source
D'autres ont mentionné la solution en utilisant
std::is_same
etdecltype
.Maintenant, pour généraliser la comparaison d'un nombre arbitraire de signatures de fonction, vous pouvez effectuer les opérations suivantes
et comparer autant de fonctions qu'une comme
( Voir la démo en direct )
Ou pour moins de frappe (c'est-à-dire sans
decltype
), faites-le en fonctionet appeler simplement par
( Voir la démo en direct )
la source
Autre possibilité non mentionnée: vous pouvez utiliser
typeid
depuistypeinfo
et==
:la source
error: non-constant condition for static assertion
.constexpr
. J'ai un exemple un peu meilleur maintenant.