¿Hay alguna manera de verificar si dos funciones tienen la misma firma? Por ejemplo:
int funA (int a, int b);
int funB (int a, int b);
float funC (int a, int b);
int funD (float a, int b);
En este ejemplo, funA
y funB
es la única combinación de funciones que debería regresar true
.
c++
function
c++17
c++-standard-library
function-signature
Stefano Pittalis
fuente
fuente
Puede verificar el tipo de función con
decltype
ystd::is_same
. p.ejEN VIVO
fuente
Otros han mencionado la solución usando
std::is_same
ydecltype
.Ahora, para generalizar la comparación de un número arbitrario de firmas de funciones, puede hacer lo siguiente
y compara tantas funciones como quieras
( Ver demostración en vivo )
O para escribir menos (es decir, sin
decltype
), hágalo como una funcióny llama simplemente por
( Ver demostración en vivo )
fuente
Como otra posibilidad que no se ha mencionado: puede usar
typeid
desdetypeinfo
y==
:fuente
error: non-constant condition for static assertion
.constexpr
. Tengo un ejemplo un poco mejor ahora.