Esiste comunque una specializzazione per un modello come questo, rendendo la specializzazione applicabile solo se T ha una funzione membro hash
? (Nota: questo è solo un esempio di ciò che sto cercando di fare. So che sarebbe più sensato per ogni classe che ha una funzione hash
verificarla autonomamente nella funzione membro operator==
, ma voglio solo sapere se questo tipo di cose è possibile.)Esiste comunque la possibilità di specializzare un modello basato sui membri di un parametro in C++?
template <class T>
bool equals(const T &x, const T &y)
{
return x == y;
}
template <class T> // somehow check if T has a member function 'hash'
bool equals<T>(const T &x, const T &y)
{
return x.hash() == y.hash() && x == y;
}
Preferirei una soluzione pre-C++ 11 se possibile.
È possibile utilizzare concetti con il concetto sperimentale del compilatore GCC, ma questo non sarà il C++ standard prima di alcuni anni. – Morwenn