Existe uma maneira de verificar se duas funções têm a mesma assinatura? Por exemplo:
int funA (int a, int b);
int funB (int a, int b);
float funC (int a, int b);
int funD (float a, int b);
Neste exemplo, funA
e funB
é a única combinação de funções que deve retornar true
.
c++
function
c++17
c++-standard-library
function-signature
Stefano Pittalis
fonte
fonte
Você pode verificar o tipo de função com
decltype
estd::is_same
. por exemploVIVER
fonte
Outros mencionaram a solução usando
std::is_same
edecltype
.Agora, para generalizar a comparação para um número arbitrário de assinaturas de funções, você pode fazer o seguinte
e compare tantas funções quanto uma
( Veja demonstração ao vivo )
Ou, para menos digitação (ou seja, sem
decltype
), faça isso como uma funçãoe ligue simplesmente
( Veja demonstração ao vivo )
fonte
Como outra possibilidade que não foi mencionada: você pode usar
typeid
detypeinfo
e==
:fonte
error: non-constant condition for static assertion
.constexpr
. Eu tenho um exemplo um pouco melhor agora.