¿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, funAy funBes 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
decltypeystd::is_same. p.ejEN VIVO
fuente
Otros han mencionado la solución usando
std::is_sameydecltype.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
typeiddesdetypeinfoy==:fuente
error: non-constant condition for static assertion.constexpr. Tengo un ejemplo un poco mejor ahora.