Gibt es überhaupt eine Spezialisierung für eine Vorlage wie diese, so dass die Spezialisierung nur dann gilt, wenn T eine Elementfunktion hash
hat? (Beachten Sie, dass dies nur ein Beispiel für das ist, was ich versuche. Ich weiß, dass es für jede Klasse, die eine hash
-Funktion hat, sinnvoller wäre, sie selbst in der Member-Funktion operator==
zu überprüfen, aber ich möchte nur wissen, ob diese Art von Sache ist möglich.)Gibt es sowieso eine Vorlage auf der Grundlage der Mitglieder eines Parameters in C++ zu spezialisieren?
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;
}
Ich würde eine pre-C++ 11-Lösung bevorzugen, wenn möglich.
Sie könnten Konzepte mit dem experimentellen Compiler-Konzept GCC verwenden, aber das wird nicht Standard C++ vor ein paar Jahren sein. – Morwenn